我有一個自定義的UIButton(SelectionButton),想知道如何讓它可以在推後推動背景顏色 - 導致它保持SelectionButton的每個實例的顏色已被按下。更改任何按Swift自定義UIButton的BG顏色
我可以在一行代碼中做到這一點嗎?它可以用於每個SelectionButton,而無需在IBAction中一次編寫一個代碼?
我有一個自定義的UIButton(SelectionButton),想知道如何讓它可以在推後推動背景顏色 - 導致它保持SelectionButton的每個實例的顏色已被按下。更改任何按Swift自定義UIButton的BG顏色
我可以在一行代碼中做到這一點嗎?它可以用於每個SelectionButton,而無需在IBAction中一次編寫一個代碼?
我建議你以下解決方案。做一個擴展的UIButton類:
extension UIButton {
override public var selected: Bool {
didSet {
if self.selected {
self.backgroundColor = UIColor.greenColor()
}
else {
self.backgroundColor = UIColor.redColor()
}
}
}
}
,比連接到的UIButton的TouchUpInside(或anothe事件)的代碼只是把:
@IBAction func myButtonClick(sender: UIButton) {
sender.selected = !sender.selected
}
我認爲這會幫助你 -
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
}
這裏是whic可能適合的解決方案你的需求更好。
這裏是類選擇按鈕:
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)
}
最後clickButton功能的選擇指出:
func clickButton(sender: SelectionButton) {
sender.selected = !sender.selected
}
請記住,在最新版本的Swift中,slector語法已經發生了變化。
您可以在代碼中改變顏色不同的州,如
mybutton.setTitleColor(UIColor.redColor(),forState:UIControlState.Selected)
如前所述,我這個做稱爲SelectionButton的自定義類。當我在第1行中用SelectionButton代替UIButton時,我得到的錯誤是UIColor是一個無法解析的標識符(這對我沒有意義,因爲SelectionButton是UIButton的一個子類) – user3246092
我剛試過這個......我做了一個: class SelectionButton:UIButton {...}並將擴展中的代碼放到這個新類中。與UIColor沒有任何問題。我建議你檢查進口清單... – tosha
我得到「不能分配給財產:發件人是'讓'常量。」我看了這個,沒有解決方案突然出現。仍在尋找 – user3246092