Swift: изменение цвета кнопки при нажатии

Вопрос: Я новичок в Swift, и я пытаюсь изменить цвет кнопки при нажатии. Когда кнопка нажата, она должна меняться, и когда она отпускается, она должна вернуться к исходному цвету кнопки. Примером этого является калькулятор. Когда вы нажимаете кнопку, она изменяется от светло-серого до темно-серого, и когда пользователь удаляет свой палец с кнопки, он возвращается к

Вопрос:

Я новичок в Swift, и я пытаюсь изменить цвет кнопки при нажатии. Когда кнопка нажата, она должна меняться, и когда она отпускается, она должна вернуться к исходному цвету кнопки.

Примером этого является калькулятор. Когда вы нажимаете кнопку, она изменяется от светло-серого до темно-серого, и когда пользователь удаляет свой палец с кнопки, он возвращается к исходному светло-серому цвету. Как мне это сделать?

Пока что у меня есть это.

@IBAction func changeButtonColourOnTouch(sender: UIButton) { zeroButton.backgroundColor = UIColor.blueColor() }

Приведенный выше код меняет цвет кнопки на синий, но остается синим.

Лучший ответ:

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

Вы можете напрямую ссылаться на раскадровку, в действие TouchUpInside (выпуск) и TouchDown (нажмите), чтобы изменить цвет кнопки на правильное состояние в каждом событии.

Или вы можете добавить Target в кнопку по коду, ссылаясь на функции, как показывает следующий ниже код.

zeroButton.addTarget(self, action: Selector(«holdRelease:»), forControlEvents: UIControlEvents.TouchUpInside); zeroButton.addTarget(self, action: Selector(«HoldDown:»), forControlEvents: UIControlEvents.TouchDown) //target functions func HoldDown(sender:UIButton) { zeroButton.backgroundColor = UIColor.blueColor() } func holdRelease(sender:UIButton) { zeroButton.backgroundColor = UIColor.whiteColor() }

Код, адаптированный по настоящему в ссылке UIButton с действием удержания и выделением

Ответ №1

вы также можете использовать жест нажатия и изменить цвет кнопки, когда пользователь нажимает на кнопку

вы можете увидеть документацию на Apple относительно UIGestureRecognizer здесь

это немного продвинуто, но вы многое узнаете от него.

Ответ №2

Вы также можете использовать setbackgroundImageForState для определения цветного изображения в качестве фона кнопки для всех UIControlState вас UIControlState, например, Normal, Highlighted, Disabled, Selected.

let cx = UIGraphicsGetCurrentContext() let color = UIColor.redColor() let state = UIControlState.Selected UIGraphicsBeginImageContext(CGSize(width:1, height:1)) CGContextSetFillColorWithColor(cx, color.CGColor) CGContextFillRect(cx, CGRect(x:0, y:0, width:1, height:1)) let colorImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() self.zeroButton.setBackgroundImage(colorImage, forState: state)

Теперь цвет меняется автоматически, и вам не нужно обращаться с ним вручную.

Ответ №3

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

let button = UIButton(type: .system)

Оцените статью
Добавить комментарий