我想创建一个全局函数,它影响所有 UIButton 实例或仅影响特定 UIButton 类型的实例,这将更新角半径或边框属性。我熟悉 UIAppearances,但是我的客户希望有一个全局文件,他们可以在其中动态更新更改,就好像它是 CSS 样式表一样。到目前为止,我已经能够对返回特定颜色和字体的 UIColor 和 UIFont 进行扩展,但是我无法弄清楚这对 UIButton 实例是如何工作的。到目前为止,这是我的想法,但我认为这行不通:
@objc extension UIButton {
func changeUIButtonBorder() -> UIButton {
self.layer.borderWidth = 3
self.layer.borderColor = UIColor.white.cgColor
return self
}
}
最佳答案
您正在做的事情很棒,而且它确实适用于 UIButton 实例。但是没有必要返回任何东西。在扩展中,self
是按钮。所以它只能改变自己。
@objc extension UIButton {
func changeUIButtonBorder() {
self.layer.borderWidth = 3
self.layer.borderColor = UIColor.white.cgColor
}
}
您现在可以在任何 UIButton 实例上调用changeUIButtonBorder
。
@IBOutlet var myButton : UIButton!
override func viewDidLoad() {
super.viewDidLoad()
myButton.changeUIButtonBorder()
}
但是,没有神奇的方法可以向所有 UIButton 广播他们应该调用该方法;你必须一次处理一个。
正如@Sh_Khan 所建议的那样,“神奇”的方法是制作一个 UIButton 子类,该子类在其自己的初始化程序中调用 changeUIButtonBorder
。然后,您只需确保所有按钮都是该子类的实例。
例如,这里有一个始终为红色的 UIButton 子类(假设所有实例都来自 Storyboard):
class RedButton : UIButton {
override func awakeFromNib() {
super.awakeFromNib()
self.backgroundColor = .red
}
}
关于swift - 如何创建影响所有或特定 UIButton 实例类型的全局函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51412479/