Как отключить подсветку UIButton?
Как отключить эффект выделения кнопки при нажатии? У вас есть пользовательская кнопка с белым цветом bg и цветом текста DarkGray. Проблема заключается в том, что текст становится белым при нажатии кнопки. Уже пробовал, но никто из них не работал:
а. Снимите флажок "Выделенное изображение Ajusts" в конструкторе интерфейса.
б. Пробованная настройка выделена = НЕТ при нажатии кнопки:
((UIButton *)sender).highlighted = NO
с. Пробовал задание того же заголовка для высокого состояния:
[button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Любые предложения?
Ответы
Ответ 1
UIButton будет выделен щелчком, поэтому установите флажок кнопки
Измените цвет заголовка в конфигурации состояния подсветки так же, как и состояние по умолчанию
Или вы можете установить:
[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
Если вы хотите управлять выделенным кодом, вы можете отключить нормальное выделение подклассом Button и отключить в touchhesBegin:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
if (self.state == UIControlStateHighlighted) {
[self setHighlighted:NO];
}
}
Ответ 2
Вы также можете создать тип UIButton: custom из StoryBoard
![Custom button]()
Это должно лишить вас любого поведения системы. (Я думаю)
Ответ 3
Это решение для кнопок с изображениями. В раскадровке есть свойство под названием HighlightedAdjustsImage
, которое по умолчанию включено. Отключите это, и ваше изображение кнопки не будет отображать выделенные свойства.
Ответ 4
Swift 4 с XCode 9
Просто снимите флажок "Выделенная настройка изображения", и если вы хотите удалить отключенный фоновый снимок, снимите флажок "Отключить настройку изображения".
Сначала убедитесь, что ваш тип кнопки "Пользовательский"
![enter image description here]()
Ответ 5
старые устаревшие ответы и старый вопрос, но самый новый и самый простой способ:
overlayButton.adjustsImageWhenHighlighted = false
Ответ 6
Ни одно из решений, которые я нашел в Интернете, не работало для меня (включая перечисленные здесь), поэтому я закончил это в своем настраиваемом подклассе UIButton
:
// swift:
override var isHighlighted: Bool {
didSet { if isHighlighted { isHighlighted = false } }
}
У меня также есть buttonType
, установленный в .custom
, но, вероятно, здесь не имеет значения.
И теперь: больше не странные выделения или цветные анимации!
Ответ 7
Мои 2 цента;) Swift 3 готов
class CustomButton: UIButton {
override var isHighlighted: Bool {
didSet {
if (isHighlighted) {
super.isHighlighted = false
}
}
}
}
Ситуация и история
Я установил изображения для UIControlState.normal
и UIControlState.selected
, поэтому установка UIButton.isSelected = true
показывает выбранное изображение, иначе нормальное изображение.
Проблема, которую мы обнаружили, была когда UIButton.isSelected = true
, а во время выделения/фокусировки (нажатием кнопки удерживайте кнопку и отбрасывайте нажатие, открутив) кнопка показывает изображение для UIControlState.normal
, которое выглядело довольно уродливым для моего босса: D
Я попробовал несколько решений, таких как UIButton(type: UIButtonType.custom)
и UIButton.adjustsImageWhenHighlighted = false
, ни один не помог: (
Ответ 8
Вы можете сделать это, создав расширение в Swift 4.2
extension UIButton {
open override var isHighlighted: Bool {
didSet {
super.isHighlighted = false
}
}}
Ответ 9
Если вы добавляете кнопку в виде прокрутки, то свойство автоматического отключения кнопки прокрутки при просмотре кнопки и ее