Недавно я заметил, что поведение свойства tintColor
значительно изменилось в одном из последних обновлений iOS 10.
У меня был код, который раньше работал отлично, а теперь вообще не работает.
В одном из моих приложений у меня есть коллекция UIBarButtonItem
, которые добавляются в массив toolbarItems
контроллера представления. Они нормально отображаются.
Однако в какой-то момент я хочу изменить цвет оттенка определенных элементов в ответ на действие пользователя. Код тривиален:
flagButton.tintColor = [UIColor redColor];
Раньше этот код работал, а теперь не работает! Я проверил, что ссылка на UIBarButtonItem
существует и что эта строка кода выполняется. Однако цвет оттенка не меняется должным образом.
В описании свойства tintColor
сказано:
Чтобы обновить отрисовку подпредставления при изменении этого свойства, переопределите метод tintColorDidChange().
Я попытался добавить метод tintColorDidChange
, но он не вызывается. На данном этапе я предполагаю, что после изменения tintColor
моя кнопка не обновляется автоматически.
Может ли кто-нибудь помочь найти способ обновить его вручную? Кнопка стандартная UIBarButtonItem
с изображением.
Обновление 1
На самом деле я заметил, что если я изменяю tintColor
панели инструментов вместо отдельного элемента, код работает. Кажется, по какой-то причине настройка цвета оттенка на отдельных элементах больше не работает. Кто-нибудь знает, почему это так?
Обновление 2
Благодаря подсказке Мэтта я смог найти источник проблемы. Это было вызвано кодом, который выполнялся при запуске приложения:
[[UITableViewCell appearance] setTintColor:[ColourTheme sharedTheme].navBackground];
Теперь я совершенно озадачен тем, почему эта строка вызвала проблемы с оттенком UIBarButtonItem
... Возможно, потому, что она внесла некоторую двусмысленность в UIAppearance
. В любом случае, поскольку мне больше не нужна эта строка, я могу легко ее удалить. Я по-прежнему оставлю свой вопрос открытым, так как считаю такое поведение очень странным, и поэтому в некотором смысле вопрос все еще остается без ответа.
В качестве дополнительной информации - контроллер представления, который столкнулся с этими проблемами, содержал в себе табличное представление.