以编程方式更改为从右到左的RTL

Sal*_*aGh 12 iphone right-to-left ios swift

我正在开发一个支持两种语言的应用程序:英语和阿拉伯语.当用户将语言更改为阿拉伯语时,我需要我的应用程序将文本从右向左(RTL).

我搜索了这个问题,我找到了关于支持RTL的答案.

我想以编程方式应用上述答案,因为我需要在App运行时从LTR更改为RTL.

Jay*_*dip 21

在Swift 4试试这个,

//FOR RIGHT TO LEFT
 UIView.appearance().semanticContentAttribute = .forceRightToLeft

//FOR LEFT TO RIGHT
 UIView.appearance().semanticContentAttribute = .forceLeftToRight
Run Code Online (Sandbox Code Playgroud)


Sal*_*aGh 10

我使用以下方法将我的应用程序更改为从右到左的RTL:

self.transform = CGAffineTransformMakeScale(-1.0, 1.0)
Run Code Online (Sandbox Code Playgroud)

这翻转了视图,然后我在视图中翻转了这样的对象:

label.transform = CGAffineTransformMakeScale(-1.0, 1.0)
textField.transform = CGAffineTransformMakeScale(-1.0, 1.0)
image.transform = CGAffineTransformMakeScale(-1.0, 1.0)
Run Code Online (Sandbox Code Playgroud)

这使我的视图RTL而不是更改所有约束或重建应用程序作为RTL.

  • 这也会翻转文本和图像,然后它会破坏应用程序设计 (3认同)
  • 伙计... @SalmaGh 你是认真的吗? (3认同)

小智 5

使用此行代码,它将在不关闭应用程序的情况下更改布局。从右到左

UIView.appearance().semanticContentAttribute = .forceRightToLeft
Run Code Online (Sandbox Code Playgroud)

而从左到右翻转

UIView.appearance().semanticContentAttribute = .forceLeftToRight
Run Code Online (Sandbox Code Playgroud)

如果您想更改文本字段布局或更改文本,请使用此代码,因为我遇到了此问题。textfield的文本未更改布局。检查此代码以更改文本字段文本的布局

extension UITextField {
open override func awakeFromNib() {
        super.awakeFromNib()
        if UserDefaults.languageCode == "ar" {
            if textAlignment == .natural {
                self.textAlignment = .right
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 不仅仅是阿拉伯语,还有更多的 RTL 语言(例如希伯来语、波斯语、乌尔都语等)。 (2认同)