在 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
}
我是 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
}