iOS ObjectiveC:从右到左支持

时间:2018-12-27 20:15:41

标签: ios objective-c right-to-left arabic-support

要在我的应用中支持从右到左,我正在使用以下说明:

[[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];

[[UIStackView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];

[UITextView appearance].textAlignment = NSTextAlignmentRight;

但是我有很多问题:  -如果需要在当前视图中应用新的对齐方式,我不知道如何刷新UI。  -在集合视图中,即使我使用,对齐方式也不会改变:

[[UICollectionView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];

所以我决定使用:

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

和:

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

它可以工作,但是如果我推另一个视图,然后在使用集合视图弹出视图之后,它再次向左对齐,直到我点击节头,然后点击右边。

1 个答案:

答案 0 :(得分:2)

根据Apple的文档,

  

默认情况下,iOS中的文本对齐是自然的;在OS X中,它保留了。   使用自然文本对齐方式将文本左对齐   从左到右的语言,并自动镜像对齐   从右到左的语言。例如,如果您设置了   使用setAlignment:方法的NSMutableParagraphStyle对象,   NSNaturalTextAlignment作为参数。

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

但是,如果您想将控件向右对齐,   从左到右的语言(从左到右从左到右的语言),   获取布局方向,如获取布局中所述   方向,然后将对齐方式设置为NSLeftTextAlignment   从右到左的语言。

有关更多详细信息,请参阅Supporting Right-to-Left Languages