。滑块上的.tag不会更改imagview的Alpha

问题描述 投票:0回答:1

下面的我的swift代码有2个不同的按钮,它们会影响基于初始化的.tagnumber的滑块。 B1应该影响图像的透明度或透明度,b2应该减小/增大大小。 b2的工作原理。 B1无法正常工作。我的代码未使用任何故事板。此外,uislider只能执行一项无法调整imageview大小并同时更改alpha的任务。仅执行一项任务。

import UIKit

class ViewController: UIViewController {

var pzc = UIImageView()
var s = UISlider()
var b1 = UIButton()
var b2 = UIButton()
var jessicaAlba:Float = 50
var topConstraint: NSLayoutConstraint!
var heightConstraint: NSLayoutConstraint!
var leadingConstraint: NSLayoutConstraint!
var trailingConstraint: NSLayoutConstraint!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    [pzc,s,b1,b2].forEach {
        $0.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview($0)
    }

    [b1,b2].forEach {
        $0.backgroundColor = .systemRed
    }

    pzc.backgroundColor = .systemGray


    b1.frame = CGRect(x: view.center.x-115, y: view.center.y+200, width: 30, height: 30)
    b2.frame = CGRect(x: view.center.x-115, y: view.center.y+250, width: 30, height: 30)

    s.addTarget(self, action: #selector(moveRight), for: .touchUpInside)
    b1.addTarget(self, action: #selector(mr1), for: .touchUpInside)
    b2.addTarget(self, action: #selector(mr2), for: .touchUpInside)

    NSLayoutConstraint.activate ([
        b1.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :37.5),
        b1.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 225),
        b1.widthAnchor.constraint(equalToConstant: 75),
        b1.heightAnchor.constraint(equalToConstant: 50),

        b2.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :130),
        b2.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 225),
        b2.widthAnchor.constraint(equalToConstant: 75),
        b2.heightAnchor.constraint(equalToConstant: 50),
    ])

    s.minimumValue = 50
    s.maximumValue = 200
    s.setValue(jessicaAlba, animated: false)

    view.addSubview(s)

    s.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10).isActive = true
    s.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10).isActive = true
    s.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10).isActive = true

    pzc.translatesAutoresizingMaskIntoConstraints = false

    view.addSubview(pzc)

    topConstraint = pzc.topAnchor.constraint(equalTo: view.topAnchor, constant: CGFloat(jessicaAlba))
    topConstraint.isActive = true
    heightConstraint = pzc.heightAnchor.constraint(equalTo: view.heightAnchor , multiplier: 0.5, constant: CGFloat(-jessicaAlba))
    heightConstraint.isActive = true

    leadingConstraint = pzc.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: CGFloat(jessicaAlba))
    leadingConstraint.isActive = true
    trailingConstraint = pzc.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: CGFloat(-jessicaAlba))
    trailingConstraint.isActive = true


}

@objc func moveRight() {
    if s.tag == 1 {
        pzc.alpha = CGFloat(s.value)
    }

    if s.tag == 2 {
        s.addTarget(self, action: #selector(changeSize), for: .valueChanged)

    }


}
@objc func changeSize() {
    jessicaAlba = s.value
    topConstraint.constant = CGFloat(jessicaAlba)
    heightConstraint.constant = CGFloat(-jessicaAlba)
    leadingConstraint.constant = CGFloat(jessicaAlba)
    trailingConstraint.constant = CGFloat(-jessicaAlba)
}

@objc func mr1() {
    b1.backgroundColor = .brown
    b2.backgroundColor = .systemPink


    s.tag = 1
}
@objc func mr2() {

      b2.backgroundColor = .brown
      b1.backgroundColor = .systemPink
      s.tag = 2
}
}
swift uibutton tags slider alpha
1个回答
1
投票

这里有多个目标添加到您的UISlider上。只需修改您的功能即可。

@objc func moveRight() {
    if s.tag == 1 {
        pzc.alpha = CGFloat(s.value)
    }
    if s.tag == 2 {
        changeSize()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.