在iOS 11中如何使大标题从右到左显示

4

iOS 11开始,苹果为UINavigationBarUINavigationItem添加了大标题显示模式,效果如下图:

enter image description here

我们可以通过以下Swift代码轻松开启此效果:

navigationBar.prefersLargeTitles = true

我的问题是如何使大标题从右到左,以便适用于东方的从右到左语言?谢谢。

1
它将根据设备语言发生。 - Fogmeister
2个回答

8
我使用的方法是:

我使用这种方法:

override func viewDidLoad() {
    super.viewDidLoad()

    navigationController?.navigationBar.subviews[1].semanticContentAttribute = .forceRightToLeft

}

2

对于所有从右到左的语言,它应该自动支持RTL。您需要做的就是将设备语言设置为RTL语言之一。或者,如果您在模拟器中调试此问题,您可以使用Xcode提供的Instruments之一来模拟RTL,同时实际上使用LTR语言。


我正在编写的波斯语这样的语言在设备语言中不存在,所有伊朗人都将他们的语言设置为英语,因此我需要手动打开视图的RTL。我想知道是否有一种手动调整的方法。 - Seyed Parsa Neshaei
1
我认为你不应该为英语使用RTL。此外,波斯语也存在于iOS中。在“语言和地区”中,当您为设备添加语言时,请在搜索栏中输入“farsi”,您会发现波斯语。 - Slava Nagornyak
在伊朗,不幸的是几乎没有人使用波斯语作为iOS设备语言。这就是为什么所有流行的应用程序都必须手动定制其用户界面的问题所在。 - Seyed Parsa Neshaei
所以,如果我理解正确的话,所有应用程序都是英文但从右到左阅读? - Slava Nagornyak
他们使用波斯语,但主要布局是英语布局,手动定制为RTL。 - Seyed Parsa Neshaei
那么,恐怕它与苹果的指南相冲突。 但是,既然你在问,如果你想要这样的行为,并且如果你从代码创建布局,你可以创建一个锚定视图的函数,在其中检测区域/语言,然后只需交换左/右或前导/尾随锚点。 - Slava Nagornyak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接