将右侧UITableViewCell中的标签与“自动布局”对齐

本文关键字:自动布局 对齐 标签 UITableViewCell | 更新日期: 2023-09-27 18:29:30

我想对may表视图单元格内容使用自动布局。到目前为止,这是有效的。现在,我想在表视图的右侧对齐一个UILabel。如果我这样做,它就没有正确对齐。相反,它完全在左侧。因此,当应用约束时,似乎没有计算表视图的宽度。我尝试了两种不同的方法:

没有。1:

this.ContentView.AddConstraints (NSLayoutConstraint.FromVisualFormat ("H:[iNumberLabel]-|", (NSLayoutFormatOptions)0, null, viewsDictionary));

没有。2:

this.ContentView.AddConstraint (NSLayoutConstraint.Create (iNumberLabel, NSLayoutAttribute.Right, NSLayoutRelation.Equal, this.ContentView, NSLayoutAttribute.Right, 1, 0));

约束被添加到我的表视图单元格子类的UpdateConstraints中。代码是用C#编写的,但这并不重要。如果你能提供一个解决方案,我会很高兴。

将右侧UITableViewCell中的标签与“自动布局”对齐

此格式字符串:"H:|-[iNumberLabel]-|"

告诉系统使用默认填充将标签固定到单元格的两侧,因此标签将接近单元格的宽度。你应该去掉左边的间距,如果你想让它右对齐,

"H:[iNumberLabel]-|"

我不知道为什么第二种方法不起作用。如果这是你唯一的水平约束,它应该起作用。

除了用将其固定在右侧之外

"H:[iNumberLabel]-|"

您还应该使用以下内容对文本进行右对齐:

cell.textLabel.textAlignment = NSTextAlignmentRight;

编辑:仅适用于iOS 8。目前没有适用于iOS 7的解决方案。

这就是的罪魁祸首

this.ContentView.TranslatesAutoresizingMaskIntoConstraints = false;

当我创建并添加标签作为子视图时,我就有了这个集合。关闭此选项后,单元格的宽度似乎无法正确布局。也许必须为ContentView添加一些额外的约束,但我不知道是哪一个(内容视图到超级视图?)。

必须为内容视图启用自动调整掩码大小。