iOS ObjectiveC: поддержка справа налево - PullRequest
0 голосов
/ 27 декабря 2018

Для поддержки справа налево в моем приложении я использую следующие инструкции:

[[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];

[[UIStackView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];

[UITextView appearance].textAlignment = NSTextAlignmentRight;

Но у меня много проблем: -Я не понимаю, как обновить пользовательский интерфейс, если янеобходимо применить новое выравнивание в текущем представлении.В представлении коллекции выравнивание не меняется, даже если я использую:

[[UICollectionView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];

, поэтому я решил использовать:

self.sectionsCollectionView.transform = CGAffineTransformMakeScale(-1, 1);

и:

cell.transform = CGAffineTransformMakeScale(-1, 1);

Это работает, но если я нажимаю другой вид и после того, как я открываю вид с видом коллекции, он снова выравнивается по левому краю, пока я не коснусь заголовка раздела, после касания он перейдет вправо.

1 Ответ

0 голосов
/ 27 декабря 2018

Согласно документации Apple,

По умолчанию выравнивание текста в iOS является естественным;в OS X осталось.Использование естественного выравнивания текста выравнивает текст слева на языке слева направо и автоматически отражает выравнивание для языков справа налево.Например, если вы устанавливаете выравнивание объекта NSMutableParagraphStyle, используя setAlignment: метод, передайте NSNaturalTextAlignment в качестве параметра.

[[(NSMutableParagraphStyle *)paraStyle setAlignment:NSNaturalTextAlignment];

Однако, если вы хотите выровнятьэлемент управления справа на языке слева направо (и слева на языке справа налево), получить направление макета, как описано в разделе Получение направления макета, и установить выравнивание на NSLeftTextAlignment дляязык справа налево.

Для получения более подробной информации см. Поддержка языков справа налево

...