iOS 9 охота сил л UINavigationController продавить направление для RTL языков
Я столкнулся с этой проблемой, когда работал над старым приложением, которое имело локализацию для арабского языка, который написан RTL. Я заметил, что в iOS9 мой UINavigationController показывал анимацию справа налево при нажатии контроллеров вида. Мои представления приложений не были готовы к этому. Они были разработаны для перехода слева направо даже в арабской раскадровке (потому что ранее в более старой iOS UINavigationController поддерживал только LTR-переход). Теперь эта RTL анимация требовала, чтобы я редизайн многих активов, поэтому я хотел заставить его показывать анимацию LTR для всех языков. После небольшого исследования я нашел решение.
2 ответа:
В iOS9 для этой цели существует новая Константа
UISemanticContentAttributeForceLeftToRight
. Следующий код исправляет проблему и заставляет анимацию слева направо:if(([[NSProcessInfo processInfo] respondsToSelector:@selector(isOperatingSystemAtLeastVersion:)]) && [[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){9, 0, 0}]) { [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; }
Мы проверяем версию iOS в первую очередь, чтобы избежать ошибок в версии iOS старше 9. Я добавил приведенный выше код в
ViewDidLoad
моего базового класса ViewController (все мои классы ViewController наследуют от этого).