【发布时间】:2017-05-24 17:45:58
【问题描述】:
我在内部切换应用语言 (LTR-RTL),然后重新初始化情节提要。
这是一段代码:
let semanticContentAttribute: UISemanticContentAttribute = language == .Arabic ? .ForceRightToLeft : .ForceLeftToRight
UIView.appearance().semanticContentAttribute = semanticContentAttribute
UINavigationBar.appearance().semanticContentAttribute = semanticContentAttribute
问题是,所有显示的视图控制器在关闭时冻结 3-6 秒。
这是什么原因造成的?
【问题讨论】:
-
你找到解决办法了吗
-
问题是应用中的视图太多。 iOS 框架本身有很多内部视图。例如,如果您初始化一个 UISearchBar,那么 UISearchBar 本身就有一个 UITextField、一个 UILabel、一个取消按钮、一个清除按钮、一个背景视图等。因此,将每个视图从 LTR 切换到 RTL 都需要时间。解决方案:我为 UIView 创建了一个扩展,并添加了一个 IBDesignable 属性 - 一个 Bool。因此,当我在 .xib 文件中创建 UIView 时,我只需检查此属性,因此它只会切换此特定视图,而不是其中的每个视图。
-
感谢您的回答
-
请多帮忙。您是否使用了任何其他方法而不是 UIView.appearance().semanticContentAttribute。或者你是否覆盖了任何 UIView 方法。
标签: ios iphone swift localization ios9