【问题标题】:LTR To RTL Using same xib in objective cLTR 到 RTL 在目标 c 中使用相同的 xib
【发布时间】:2018-03-13 07:04:48
【问题描述】:

我坚持一个观点,我想开发一个同时支持 LTR 和 RTL 的应用程序,但我不想为 LTR 和 RTL 创建两个 .xib。

那么任何人都可以使用相同的 xib 为我提供任何可从 LTR 到 RTL 的方法。

提前谢谢你。

【问题讨论】:

  • 您的意思是在更改语言后不重新启动应用程序,我的意思是在相同的语言环境中?
  • 在这里查看我的答案:完整背景(iOS 版本、案例等)stackoverflow.com/questions/31877140/…
  • @Sh_Khan 是的,当用户从应用程序中选择语言时,我想将所有 UI 更改为 RTL,并且我将更改所有文本。意思是如果我在左下角有按钮并且我设置了 RTL 语言,那么该按钮应该设置为右下角精确镜像设计。

标签: ios objective-c multilingual


【解决方案1】:

你可以通过改变语义来做到这一点

   self.anyView.semanticContentAttribute = .forceLeftToRight

   self.anyView.semanticContentAttribute = .forceRightToLeft

在objective-c中

 self.anyView.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight;

或者

 self.anyView.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;

另请参阅此演示:RTLDemo

【讨论】:

  • 查看编辑,也不要忘记将约束设置为前导和尾随而不是右/左,以便 RTL 可以工作
  • @hardikvyas 等待演示
【解决方案2】:

无需创建 2 个 xib 文件即可使 LTR 和 RTL 工作。

基本上你需要:

  1. 设置前导尾随约束
  2. 如果 iPhone 语言是 RTL 语言,现在将充当尾随,而尾随将充当前导(因此无需创建 2 个 xib 文件,您的视图元素将被翻转)
  3. 在某些情况下,您可能希望使用imageFlippedForRightToLeftLayoutDirection() force RTL/LTR 图像:

    image = [image imageFlippedForRightToLeftLayoutDirection];
    

    在检查当前语言时使用:

    BOOL isLeftToRight = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:[[self view] semanticContentAttribute]] == UISemanticContentAttributeForceLeftToRight;
    
  4. 请记住,每个 UIView 都有 semanticContentAttribute 可以设置为强制 RTL UISemanticContentAttributeForceRightToLeft。即:

    [view setSemanticContentAttribute: UISemanticContentAttributeForceRightToLeft];
    
  5. 使用 textFields 时,请使用以下对齐方式,以便每个 RTL/LTR 都能正常工作:

【讨论】:

  • 我希望它在目标 c
  • 更新到 objc
  • 感谢您的回答。您给定的解决方案对我来说非常好,再次感谢您....
  • 如果您认为此答案解决了您的问题,您可以重新接受 - 接受的答案是最适合您需求的答案。
  • 您的解决方案对我有用,但正如我想要的那样完美,所以我接受了上述答案。但是由于您的回答也很好,所以我赞成您的回答并发表评论,以便其他开发人员也可以知道这个答案也有效。
【解决方案3】:

以下是我的一些方法。

  • 首先,验证布局方向(你可以为此创建一个宏)

    [UIApplication sharedApplication].userInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionRightToLeft

  • 将 IBOutlet 用于 NSLayoutConstraint 并设置常量/优先级以移动 UI 元素

  • 对于标签,使用NSTextAlignmentNatural 用于 LTR 中的左对齐,对于 RTL 将照顾系统。否则你必须自己设置它们的文本对齐方式
  • 对于一些相关的图像,您必须水平翻转它们
  • 对于任何类型的绘图(在 drawRect 或图层中),您都应该注意

这些对我来说很重要,但还有更多。只要有创意

【讨论】:

    猜你喜欢
    • 2015-03-08
    • 2021-10-22
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2020-10-27
    • 2014-01-16
    相关资源
    最近更新 更多