【问题标题】:Align label in UITableViewCell on the right with Auto Layout将右侧 UITableViewCell 中的标签与自动布局对齐
【发布时间】:2014-11-07 14:32:47
【问题描述】:

我想对可能的表格视图单元格内容使用自动布局。到目前为止,这很有效。现在我想在表格视图的右侧对齐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# 中,但这并不重要。如果您能提供解决方案,我会很高兴。

【问题讨论】:

    标签: c# ios uitableview autolayout


    【解决方案1】:

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

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

    "H:[iNumberLabel]-|"
    

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

    【讨论】:

    • 哦,谢谢。我猜对了,但出于测试目的,我使用了H:|-[iNumberLabel]-|。这是唯一的水平约束。嗯...
    【解决方案2】:

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

    "H:[iNumberLabel]-|"

    您还应该使用以下命令点亮文本:

    cell.textLabel.textAlignment = NSTextAlignmentRight;

    【讨论】:

    • 感谢您的加入。这没有帮助。
    【解决方案3】:

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

    这是罪魁祸首

    this.ContentView.TranslatesAutoresizingMaskIntoConstraints = false;

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

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

    【讨论】:

      猜你喜欢
      • 2016-09-26
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      相关资源
      最近更新 更多