2017-01-10 12 views
0

Я внутренне переключаю язык приложений (LTR-RTL), а затем повторно инициализирую раскадровку.Проблема с зависанием (заморозка) UISemanticContentAttribute = .ForceRightToLeft

вот кусок кода:

let semanticContentAttribute: UISemanticContentAttribute = language == .Arabic ? .ForceRightToLeft : .ForceLeftToRight 

UIView.appearance().semanticContentAttribute = semanticContentAttribute 
UINavigationBar.appearance().semanticContentAttribute = semanticContentAttribute 

Проблема в том, все представленные контроллеры вид замерзает в течение 3-6 секунд, в то время как отвергая его.

Что вызывает это?

+0

Вы нашли решение по этому вопросу –

+0

Проблема заключалась в том, что в приложении слишком много просмотров. есть много внутренних представлений из самой системы iOS. Например, если вы инициализируете UISearchBar, сам UISearchBar имеет UITextField, UILabel, кнопку «Отмена», кнопку «Очистить», фоновое представление и т. Д. Поэтому потребовалось время для переключения каждого вида из LTR в RTL. Решение: Я создал расширение для UIView и добавил атрибут IBDesignable - Bool. Поэтому, когда я создаю UIView в файле .xib, я просто проверяю это свойство, поэтому он будет переключать только этот вид, а не каждый вид внутри него. –

+0

Спасибо за ответ –

ответ

0

Установка semanticContentAttribute на appearance() прокси не поддерживается. Вы столкнетесь со многими другими проблемами и ошибками, поскольку приложение по-прежнему полагает, что оно работает на языке, который не является тем, который вы переопределяете.

Добавление языкового коммутатора в ваше приложение только сделает его более запутанным; пользователи ожидают, что их приложения будут следовать языку, на котором установлено их устройство.