2015-07-12 5 views
4

Я пытаюсь создать базовое приложение для своего iPhone. Я совершенно не знаком с Xcode, и у меня есть обзор google и я не могу найти то, что ищу. Я пытаюсь составить контрольный список для своего самолета.Swift: измените цвет кнопки после нажатия

У меня есть контроллер View с несколькими кнопками. И я хочу, чтобы кнопка переключалась с серого на синий после нажатия и оставалась синей, если не была нажата снова. Я вообще не знаю языка Xcode и Swift, поэтому, если кто-нибудь может помочь объяснить, как будто вы объясняете ребенку.

До сих пор мне удалось настроить страницы на все настройки и прокрутку, но мне просто нужно, чтобы кнопки теперь менялись.

Заранее благодарю вас, Ty.

ответ

4

Используйте этот метод класса UIButton

func setTitleColor(_ color: UIColor?, 
      forState state: UIControlState) 

Государство вы ищете, .selected

И, конечно, вы должны обрабатывать выбранное состояние самостоятельно, как кнопка переключения не является родным поведение ,

4

Это довольно просто.

Сначала вы начнете настраивать фоновый цвет кнопки в методе ViewDidLoad(). До этого вам уже нужно было установить IBOutlet для кнопки. В моем примере я просто собираюсь назвать розетку общей «кнопкой».

Ваш IBOutlet будет:

@IBOutlet weak var button:UIButton! 

Не забудьте подключить розетку к кнопке, как хорошо!

Далее установите фоновое изображение кнопки на серый в ViewDidLoad, например, так:

override func viewDidLoad() { 
    super.viewDidLoad() 

    button.backgroundColor = UIColor.grayColor() 
} 

Это должно дать вашей кнопки общий серый фон. Если вы хотите больше контролировать фактический цвет, вы можете заменить button.backgroundColor = UIColor.grayColor() на button.backgroundColor = UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat), заменив «CGFloat» на значения, которые вы выберете.

Далее, фактический код, чтобы изменить цвет кнопки:

сделать IBAction и провод его до кнопки. Шахта называется:

@IBAction func buttonTapped(sender: AnyObject) {} 

Ваше условие, что если кнопка имеет серый цвет, он должен стать синим на кране, и если он синий, то он должен стать серым цветом на кране.

Таким образом, в IBAction, что мы просто определены, вы добавите заявление, если, например, так:

@IBAction func buttonTapped(sender: AnyObject) { 
    if button.backgroundColor == UIColor.grayColor() { 
     button.backgroundColor = UIColor.blueColor() 
    } 
    else if button.backgroundColor == UIColor.blueColor() { 
     button.backgroundColor = UIColor.grayColor() 
    } 
} 

Что это, если утверждение не является то, что если цвет фона для кнопки серого цвета, он устанавливает его на синий, или если цвет фона синий, он устанавливает его в серый цвет. Вы можете заменить UIColor.BlueColor() или UIColor.GrayColor(), с более персонализированным UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat), если хотите.

Edit: Если вы просто хотите, чтобы изменить цвет текста кнопки, просто добавьте это заявление или его изменения в нужном месте:

button.setTitleColor(UIColor.grayColor(), forState: UIControlState.Selected) 
0

Для Swift 3:

// for change background color of a selected button in a collection view 
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let collectionCell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) 
    collectionCell.button.addTarget(self, action: #selector(button_Select(_:)), for: .touchUpInside) // add target for action 

    return collectionCell 
} 

@objc func button_Select(_ sender: UIButton) { 
    let button = sender 

    if button.isSelected == true { 
     button.backgroundColor = UIColor.uicolorFromHex(0x262D35, alpha: 100) 
     button.setTitleColor(UIColor.white, for: .normal) 
     button.isSelected = false 
    } else { 
     button.backgroundColor = UIColor.uicolorFromHex(0xF3CD70, alpha: 100)//Choose your colour here 
     button.setTitleColor(UIColor.white, for: .normal) //To change button Title colour .. check your button Tint color is clear_color.. 
     button.isSelected = true 
    } 
} 
Смежные вопросы