Ios 更改自定义UIButton';在Swift中的任何印刷机上都有s BG颜色
我有一个自定义的UIButton(SelectionButton),我想知道如何使其在按下后背景颜色发生变化——使其在按下SelectionButton的每个实例时都保持该颜色Ios 更改自定义UIButton';在Swift中的任何印刷机上都有s BG颜色,ios,iphone,swift,uibutton,Ios,Iphone,Swift,Uibutton,我有一个自定义的UIButton(SelectionButton),我想知道如何使其在按下后背景颜色发生变化——使其在按下SelectionButton的每个实例时都保持该颜色 我能用一行代码来完成这项工作吗?它可以适用于每个SelectionButton,而不必在iAction中一次编写一个代码?我想这会对您有所帮助- let discoverButton:UIButton = UIButton(frame: CGRect(x:100 , y: 40.0, width: 360.0, heig
我能用一行代码来完成这项工作吗?它可以适用于每个SelectionButton,而不必在iAction中一次编写一个代码?我想这会对您有所帮助-
let discoverButton:UIButton = UIButton(frame: CGRect(x:100 , y: 40.0, width: 360.0, height: 70.0 ))
discoverButton.setBackgroundImage(UIImage(named: "discover-white.png"), forState: UIControlState.Normal)
discoverButton.setBackgroundImage(UIImage(named: "discover-blue.png"), forState: UIControlState.Focused)
discoverButton.setBackgroundImage(UIImage(named: "discover-blue.png"), forState: UIControlState.Selected)
discoverButton.addTarget(APP_DELEGATE, action:#selector(YourClassName.MenuButtonsPrimaryActionTriggered(_:)), forControlEvents: UIControlEvents.PrimaryActionTriggered)
discoverButton.userInteractionEnabled = true;
discoverButton.tag=101
func MenuButtonsPrimaryActionTriggered(btn:UIButton)->Void
{
//Action performed on button
}
我建议你采用以下解决方案。对UIButton类进行扩展:
extension UIButton {
override public var selected: Bool {
didSet {
if self.selected {
self.backgroundColor = UIColor.greenColor()
}
else {
self.backgroundColor = UIColor.redColor()
}
}
}
}
在连接到UIButton的TouchUpInside(或事件)的代码中,只需输入:
@IBAction func myButtonClick(sender: UIButton) {
sender.selected = !sender.selected
}
这是一个可以更好地满足您需求的解决方案 这是班级选择按钮:
class SelectionButton: UIButton {
override var selected: Bool {
didSet {
if self.selected {
self.backgroundColor = UIColor.greenColor()
}
else {
self.backgroundColor = UIColor.redColor()
}
}
}
}
以及以编程方式创建按钮实例的代码:
@IBAction func createSelButton(sender: AnyObject) {
let myButton = SelectionButton()
myButton.frame = CGRect(x: 100, y: 200, width: 200, height: 25)
self.view.addSubview(myButton)
myButton.setTitle("My Selection Button", forState: UIControlState.Normal);
myButton.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
myButton.addTarget(self, action: "clickButton:", forControlEvents: UIControlEvents.TouchUpInside)
}
最后点击选择器指向的按钮功能:
func clickButton(sender: SelectionButton) {
sender.selected = !sender.selected
}
请记住,在最新版本的Swift中,slector语法已经更改。您可以在以下代码中更改不同状态的颜色:
mybutton.setTitleColor(UIColor.redColor(),forState:UIControlState.Selected)如前所述,我使用名为SelectionButton的自定义类来完成此操作。当我在第1行用SelectionButton替换UIButton时,我得到了UIColor作为未解析标识符的错误(这对我来说没有意义..因为SelectionButton是UIButton的子类),我只是尝试了这个。。。我做了一个:class SelectionButton:UIButton{…},并将扩展中的代码放到这个新类中。对UIColor没有任何问题。我建议您检查导入列表…我得到“无法分配到属性:发送方是一个'let'常量”。我查了一下,没有弹出解决方案。看起来还是很奇怪。我需要看一下代码。我不知道你为什么要换寄件人。更改发送者指向的对象的属性是可以的。这个问题用新的眼光来看是显而易见的。。我需要将iAction中的(sender:UIButton)更改为(sender:SelectionButton),以反映自定义子类。更新答案并进行核对。非常感谢。