В моем приложении для iPhone есть UIButton, который я создал в Interface Builder. Я могу успешно включить и отключить это в моем коде ...
sendButton.enabled = YES;
или
sendButton.enabled = NO;
Тем не менее, внешний вид кнопки всегда одинаков! Он не выцветший и не серый. Если я попытаюсь нажать на него, он будет включен или отключен, как и ожидалось. Я что-то упускаю? Разве это не должно выглядеть блеклым или серым?
ios
iphone
cocoa-touch
uibutton
Энди А
источник
источник
Ответы:
Вы можете использовать следующий код:
источник
просто измените конфигурацию состояния, чтобы отключить и выберите то, что вы хотите, фоновое изображение для отключенного состояния
источник
Другой вариант - изменить цвет текста (например, на светло-серый) для отключенного состояния.
В редакторе раскадровки выберите
Disabled
изState Config
всплывающей кнопки. ИспользуйтеText Color
всплывающую кнопку, чтобы изменить цвет текста.В коде используйте
-setTitleColor:forState:
сообщение.источник
Попробуйте установить различные изображения для
UIControlStateDisabled
(отключенное серое изображение) иUIControlStateNormal
(обычное изображение), чтобы кнопка генерировала для вас отключенное состояние.источник
[ UIButton setAttributedTitle:forState:]
. Создайте атрибутивную строку, в которой цвет текста переднего плана установлен на прозрачный цвет.Чтобы кнопка была блеклой при отключении, вы можете установить альфа для нее. Есть два варианта для вас:
Первый способ : если вы хотите подать заявку на все свои кнопки в вашем приложении, вы можете написать
extension
для UIButton так:Второй способ : если вы просто хотите подать заявку на некоторые кнопки в вашем приложении, вы можете написать собственный класс из UIButton, как показано ниже, и использовать этот класс, для которого вы хотите применить:
источник
Если вы используете текстовую кнопку, вы можете поместить в viewDidLoad метод экземпляра
пример:
источник
Вы можете использовать
adjustsImageWhenDisabled
который является собственностьюUIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)
Пример:
источник
Это довольно старый вопрос, но есть очень простой способ добиться этого.
myButton.userInteractionEnabled = false
Это отключит только сенсорные жесты без изменения внешнего вида кнопки.
источник
В Свифте :
или
источник
Набор
title color
для разных состояний:Использование: (цвет текста будет изменен автоматически)
источник
Создайте расширение в Swift> 3.0, а не каждую кнопку отдельно
источник
Вы можете использовать оба первых ответа и будет лучший результат.
В инспекторе атрибутов (когда вы выбираете кнопку) измените параметр «Конфигурация состояния» на «Отключено», чтобы установить новое изображение, которое будет отображаться при его отключении (уберите маркер в поле «Контент-> Включено», чтобы отключить его). ,
И когда вы изменяете состояние на включенное, изображение будет загружать изображение из этого состояния.
Добавление альфа-логики это хорошая деталь.
источник
Свифт 4+
Как пользоваться
источник
Я застрял на той же проблеме. Установка альфы это не то, что я хочу.
UIButton
имеет « фоновое изображение » и « цвет фона ». Для изображенияUIButton
имеет свойство как@property (nonatomic) BOOL adjustsImageWhenDisabled
И фоновое изображение рисуется светлее, когда кнопка отключена. Для цвета фона, настройка альфа, решение Равина, отлично работает.
Во-первых, вы должны проверить, не установлен ли флажок «отключено настраивает изображение» в разделе «Утилиты-атрибуты».
Затем проверьте цвет фона для этой кнопки.
(Надеюсь, это полезно. Это старый пост; в Xcode все могло измениться).
источник
Похоже, следующий код работает нормально. Но в некоторых случаях это не работает.
Если приведенный выше код не работает, поместите его в основной поток. так
если вы идете с быстрым, как это
Кроме того, если вы настроили UIButton, добавьте это в класс Button.
Спасибо и наслаждайтесь кодированием !!!
источник
Если
UIButton
находится в комбинированном состоянииselected
иdisabled
, его состояниеUIControlStateSelected | UIControlStateDisabled
.Таким образом, его состояние должно быть скорректировано следующим образом:
Один из подходов заключается
UIButton
в следующем:источник
На этот вопрос есть много ответов, но все они выглядят не очень полезными, если вы действительно хотите использовать backgroundColor для стилизации ваших кнопок. UIButton имеет хорошую опцию для установки разных изображений для разных состояний управления, но нет другой функции для цветов фона. Поэтому одним из решений является добавление расширения, которое будет генерировать изображения из цвета и применять их к кнопке.
Только одна проблема с этим решением - это изменение не будет применено к кнопкам, созданным в раскадровке. Что касается меня, это не проблема, потому что я предпочитаю стилизовать пользовательский интерфейс из кода. Если вы хотите использовать раскадровки, то добавьте немного магии
@IBInspectable
.Второй вариант - это создание подклассов, но я предпочитаю избегать этого.
источник
Возможно, вы можете создать подкласс для своей кнопки и переопределить переменную isEnabled. Преимущество заключается в том, что вы можете повторно использовать в нескольких местах.
источник
.час:
источник