在 swift 中以编程方式使用 UIButton 切换功能

Toggle function with UIButton programmatically in swift

我是 swift 的新手,我想用 UIButton 制作一个 toggle/switch 函数。

我已经尝试了多种方法,但我没有找到解决方案。

你能帮我解决这个问题吗?

这是我的代码(这些按钮在 viewDidLoad 方法中声明):

let switchLightBT = UIButton()
switchLightBT.frame = (frame: CGRect(x: 1, y: 220, width: 102, height: 102))
switchLightBT.backgroundColor = .clear
switchLightBT.tag = 1
switchLightBT.setImage(#imageLiteral(resourceName: "dark-icon"), for: .normal)
switchLightBT.addTarget(self, action: #selector(darkTheme(sender:)), for: .touchUpInside)
self.view.addSubview(switchLightBT)

let switchDarkBT = UIButton()
switchDarkBT.frame = (frame: CGRect(x: 1, y: 220, width: 102, height: 102))
switchDarkBT.backgroundColor = .clear
switchDarkBT.tag = 2
switchDarkBT.setImage(#imageLiteral(resourceName: "light-icon"), for: .normal)
switchDarkBT.addTarget(self, action: #selector(lightTheme(sender:)), for: .touchUpInside)

self.view.addSubview(switchDarkBT)

和行动:

    func darkTheme(sender: UIButton!){
        self.view.backgroundColor = .black
sender.isHidden = true
        for button in self.wbButtons {
            button.setTitleColor(UIColor .white, for: .normal)
        }
    }

    func lightTheme(sender: UIButton!){
        self.view.backgroundColor = .white
sender.isHidden = true
        for button in self.wbButtons {
            button.setTitleColor(UIColor .black, for: .normal)
        }
    }

只是为了预览,没有这段代码(也在 viewDidLoad 方法中声明),我希望工作正常但一次,我希望一直工作。

if switchDarkBT.isSelected == false {
    switchDarkBT.isHidden = false
    switchLightBT.isHidden = true
} else {
    switchDarkBT.isHidden = true
    switchLightBT.isHidden = false

}

您可以将 switchLightBT 和 switchDarkBT 声明为实例变量,并将这些行添加到您的按钮函数中。

func darkTheme(sender: UIButton!){
        switchDarkBT.isHidden = true
        switchLightBT.isHidden = false
        self.view.backgroundColor = .black
        for button in self.wbButtons {
            button.setTitleColor(UIColor .white, for: .normal)
        }
    }

func lightTheme(sender: UIButton!){
        switchLightBT.isHidden = true
        switchDarkBT.isHidden = false
        self.view.backgroundColor = .white
        for button in self.wbButtons {
            button.setTitleColor(UIColor .black, for: .normal)
        }
        }

试试这个

class ViewController: UIViewController { 
let switchLightBT = UIButton() 
let switchDarkBT = UIButton() 

override func viewDidLoad() { 
super.viewDidLoad() 
switchLightBT.frame = (frame: CGRect(x: 1, y: 220, width: 102, height: 102)) 
switchLightBT.backgroundColor = .clear 
switchLightBT.tag = 1 
switchLightBT.setImage(UIImage(named:"light"), for: .normal) 
switchLightBT.addTarget(self, action: #selector(darkTheme(sender:)), for: .touchUpInside) 
self.view.addSubview(switchLightBT) 

switchDarkBT.frame = (frame: CGRect(x: 1, y: 220, width: 102, height: 102)) 
switchDarkBT.backgroundColor = .clear 
switchDarkBT.tag = 2 
switchLightBT.setImage(UIImage(named:"dark"), for: .normal) 
switchDarkBT.addTarget(self, action: #selector(lightTheme(sender:)), for: .touchUpInside) 

self.view.addSubview(switchDarkBT) 

} 

func darkTheme(sender: UIButton!){ 
self.view.backgroundColor = .black 
switchLightBT.isHidden = true 
switchDarkBT.isHidden = false 

} 

func lightTheme(sender: UIButton!){ 
self.view.backgroundColor = .white 
switchLightBT.isHidden = false 
switchDarkBT.isHidden = true 

}