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
我有一个 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