UISearchBar в iOS 13 имеет маленькое черное пятно рядом с кнопкой закрытия (x)

В iOS 13 мы видим эту ошибку при использовании UISearchBar (через UISearchController. Рядом с кнопкой закрытия (x) есть небольшой черный фрагмент.

Проблема отсутствовала в iOS 12.4.

Используя отладчик пользовательского интерфейса, я определил, что проблема вызвана тем, что мы сами локализовали строку «Отмена» (поскольку мы хотим перевести приложение на большее количество языков, чем поддерживается пользовательским интерфейсом Apple System), используя следующий код:

UIButton.appearance(whenContainedInInstancesOf: [UISearchBar.self])
        .setTitle("Cancel", for: .normal)

Представление UISearchBar в iOS 13


person Claus Jørgensen    schedule 23.09.2019    source источник
comment
Возможно, вы могли бы проверить иерархию представлений в отладчике, чтобы узнать, какое представление здесь наполовину скрыто.   -  person Andreas Oetjen    schedule 23.09.2019


Ответы (1)


Согласно комментариям, https://stackoverflow.com/a/58040862/95309 есть исправление:

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title

Разница между UIButton.appearance и UIBarButtonItem.appearance кажется виновником.

person Claus Jørgensen    schedule 23.09.2019
comment
Это приведет к сбою, если вы работаете на iOS 13, доступ к set get KVO теперь является частным API. - person Nata Mio; 23.09.2019
comment
@NataMio нет, на iOS 13 не происходит сбой. Частные API (традиционно) начинаются с подчеркивания, так что это почти общедоступный API. - person Claus Jørgensen; 23.09.2019
comment
@NataMio да, это версия с подчеркиванием. Это большая разница, так как это будет обращаться к ivar, а не к свойству. - person Claus Jørgensen; 23.09.2019
comment
но это может измениться в будущем, я думаю, вы правы. - person Nata Mio; 23.09.2019
comment
@NataMio, тем не менее, предложение в этой ссылке также работает отлично. Разница между UIButton.appearance и UIBarButtonItem.appearance, похоже, помогает. - person Claus Jørgensen; 23.09.2019