表格单元视图未右对齐。

5
我想将我的表格单元格右对齐。
我已经通过整个可视树将“语义”属性设置为“强制从右到左”的值。
期望的布局:
可视树:
代码中没有任何视觉定义...
编辑:
在@dirtydanee的建议之后:

您的单元格已经按照您指定的方式右对齐。您想将文本向右对齐,并从最长的文本开始对齐吗? - dirtydanee
忘记在截图中扩展约束条件了。我想将文本固定在右上角。希伯来语是从右到左阅读的。很快会尝试绘制所需的布局。 - Dorad
试试这个教程,它会解决你的问题:https://medium.com/if-let-swift-programming/working-with-localization-in-swift-4a87f0d393a4我也在为我的应用程序的阿拉伯语版本使用它。谢谢 - Aadil Ali
7个回答

1

Stack view configuration

对于您的堆栈视图,应将 alignment 设置为 Leading,以使其从您的语言的前导位置开始,这是您的右侧。然后将 Semantic 设置为 Force Right-to-Left
重要的是,您已将堆栈视图的边缘绑定到其容器的边缘,以便堆栈视图将大小调整为其容器。同样重要的是,让标签具有动态大小。虽然在您的代码中似乎满足了这两个条件,但并不完全清楚。

1

只需执行以下步骤,即可在 tableviewCell 中将文本赋值到右侧:

  • 步骤 1:在 StoryBoard 的上下文视图单元格中选择视图

  • 步骤 2:将文本对齐到右侧。

Description image


1

看起来你的约束条件有误。

将标签约束到右侧,并将其文本对齐到右侧。

这里有一个例子:

enter image description here

并在模拟器上运行:

enter image description here


那不行 :-(。[关于另一个问题 - 它没有起作用。如果我接受你的答案,那么我将减少从其他用户获得替代答案的机会。尽管如此,我还是给了你全部的赏金。] - Dorad
谢谢,我真的很想帮你。你正在使用哪个版本的Xcode?你用的是Swift还是obj-c语言? - inspector_60
另外,你复制了我的限制吗?顺便说一下,我没有编辑任何本地化设置,并且我已经在使用英语作为语言的设备上测试了这个例子。 - inspector_60
Xcode 8.3.2。Swift 3。我已经复制它们了。我也认为这与本地化无关。 - Dorad
请问您能否添加一个属性检查器的照片?它是带有小盾牌标志的那个。 - inspector_60

1
如果您使用leadingtrailing约束来布局您的UILabel元素,则在使用从右到左的语言时,所有内容都会自动切换到正确的位置。无需更改NSTextAlignment.natural是默认设置并且您需要的设置)或UILabelUISemanticContentAttributeenter image description here

请注意,您需要在项目本地化中添加至少一种 RTL 语言:

enter image description here


当您的iPhone / iPad语言设置为希伯来语时,一切应该按预期工作:

enter image description here


我没有编辑任何本地化设置,并且我已经在将语言设置为英语的设备上测试了这个示例。 - inspector_60
@inspector_60,我不明白你的意思。你想告诉我们什么? - d.felber
解决方案不应仅限于“希伯来语”设备。 它对@Dorad不起作用的原因必须是其他的。 - inspector_60
@inspector_60 这就是如何为从左到右和从右到左的语言构建界面。这个解决方案是否有用取决于Dorad。 - d.felber

0

这也取决于您设备选择的语言。

您可以尝试使用left代替leading,并使用right代替trailing


它对你有效吗?还是无效?此外,您可以将文本对齐设置为自然。 - Prashant Tukadiya
不起作用。无法设置文本对齐方式为自然。 - Dorad
无论您在哪里放置带有属性的文本?而且您的约束条件应该是这样的:右侧:(您的常量 =),顶部:(您的常量 =),底部:(您的常量 =),以及左侧:(大于(您的常量))。 - Prashant Tukadiya
尝试您建议的限制,并会告知结果。 - Dorad
好的,祝你好运。从你的输出来看,除了约束条件之外,你已经正确地完成了所有事情。 - Prashant Tukadiya

0

我尝试了一个演示,我认为你需要做的是分别为每个标签设置语义。

进入perekSourcelabel设置从右到左的语义,然后对标题标签执行相同操作。

不要为您的堆栈视图或整个perekTableViewcell设置语义。


0
复制另一个对齐良好的场景(视图控制器)并删除损坏的解决了问题。
不确定问题出在哪里。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接