Как изменить titleTextAttributes для UIBarButtonItem после его нажатия? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть панель навигации с несколькими кнопками UIBarButton, которые я первоначально отображаю с альфа-значением 0,5, и я хотел бы отображать с альфа-1 после нажатия.Я храню эти атрибуты в normalAttributes и selectedAttributes.

Я настроил кнопки следующим образом:

colorButton = UIBarButtonItem(title: "Colors", style: .plain, target: self, action: #selector(showColors))
colorButton.setTitleTextAttributes(normalAttributes, for: .normal)
colorButton.setTitleTextAttributes(highlightedAttributes, for: .selected)

Это приводит к кратковременному переключению кнопки на выделенные атрибуты, что и ожидается.Однако в рамках действия кнопки showColors я затем выполняю следующее:

textButton.setTitleTextAttributes(highlightedAttributes, for:[])

Я также попытался использовать .normal вместо [].Похоже, что ни один из методов не оказывает какого-либо влияния на кнопку.Любая помощь с этим будет очень признателен.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

A UIButton содержит UILabel в качестве свойства titleLabel.Просто установите его атрибуты обычным способом вместо того, чтобы устанавливать их через функции сквозного доступа кнопки.

0 голосов
/ 23 октября 2018

Самый простой способ сделать это - использовать пользовательское представление.То есть создайте отдельный UIButton и сделайте ссылку на него в своем классе (например, let yourButton = UIButton()).Инициализируйте элемент панели кнопок с помощью UIBarButtonItem(customView: yourButton), а затем используйте его по своему усмотрению.

Просто обратите внимание, что вам нужно добавить пару action / target на yourButton, а не напанель кнопокЗатем в вашем обработчике action, showColors в вашем случае, вы можете изменить внешний вид yourButton.

Вы можете либо напрямую переключать alpha, либо, если речь идет только о тексте, вы можете сделать: yourButton.setTitleColor(yourColor, for: .normal) и yourButton.setTitleColor(yourColorHalfAlpha, for: .selected).

Затем в вашем showColors просто позвоните yourButton.isSelected = !yourButton.isSelected, чтобы переключить внешний вид.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...