UIButton 标题对齐不会更改为 RTL 中的正确方向

UIButton title alignment not changing to right direction in RTL

我有一个 LTR 和 RTL 语言的应用程序。一切都很好,但 UIButton 标题对齐方式并没有改变到右边,尽管 UIButton 翻转了自己。 这是屏幕截图:

默认语言英语的限制条件:

问题是什么以及为什么会发生?我们是否需要以编程方式将标题设置为右对齐?

不知道为什么会这样,但您必须将 UIButton 子类化,以便您可以覆盖 alignmentRectInsets.

override func alignmentRectInsets() -> UIEdgeInsets {
    var insets: UIEdgeInsets
    if (Left_Side_Button) {
        insets = UIEdgeInsetsMake(0, 7.0, 0, 0)
    }
    else {
        // Right Button
        insets = UIEdgeInsetsMake(0, 0, 0, 7.0)
    }
    return insets
}

并通过上面的代码实现。

使用情节提要中的右对齐方式

或以编程方式作为

buttonShowOnMap.contentHorizontalAlignment = .left//For left alignment

buttonShowOnMap.contentHorizontalAlignment = .right//For right alignment

已接受的答案对我没有帮助。但是以下代码片段可以自动支持 RTL 和 LTR 语言:

// makes button content support RTL <-> LTR
button.contentHorizontalAlignment = .leading

// makes titleLabel support RTL <-> LTR
button.titleLabel?.textAlignment = .natural