2

我需要创建两个 UILabel,它们应该根据里面的文本大小动态调整大小UITableViewCell。第一个UILabel应该向左增长(基于文本)并始终将 15 点与右边框对齐。第二个UILabel应该(也向左动态增长)并与第一个 UILabel 的右侧对齐 7 个点。

... [label 2]<--7p-->[label 1]<--15p-->|right cell border

  1. 这只能在故事板上完成(没有代码)吗?
  2. sizeToFit:我在故事板布局和代码中定义了水平约束。并发现水平约束已被覆盖。试图改变框架viewDidLoad:但并非所有帧都已更新(执行选择器延迟为 0 - 更新所有单元格中的所有标签,但产生一秒延迟。)

请指教,谢谢阿萨夫

4

2 回答 2

1

问题1)

实际上你可以在代码中做到这一点。但我认为在你的情况下 Interface Builder 更好。

我认为您不必在代码中使用 [sizeToFit:]。

如果您没有为标签设置宽度限制,我认为您的情节提要中有警告。

像 UILabel、UIButton 这样的 UIControls 具有固有大小,因为它们具有文本内容。所以你不需要设置宽度约束。

但是你有两个标签,当标签之间存在冲突时,你应该让自动布局知道哪个标签更重要。- 前任。如果标签有长文本,则显示哪个标签的文本而不缩短(...)。

为此,请在 Interface Builder 中设置 Hugging(或 Compression)优先级。

问题2)

[viewDidLoad:] 不适合改变几何的东西。UIViewController 的视图在 [viewWillAppear:] 之后添加到视图层次结构中

如果您需要更多信息,请告诉我。

于 2014-07-09T11:27:06.840 回答
1

您可以通过代码或 StoryBoard 自动布局来实现结果。以下是 Storyboard 自动布局的步骤:

1.确保您有带有两个标签且没有自动布局约束的单元格(如果有,请清除它们)

2.添加约束Label 1

TwoLabelsCell_Label1_Constraints

3.添加约束Label 2

TwoLabelsCell_Label2_Constraints

结果:

TwoLabelsCell_Result

评论:

  • 布局操作应通过updateViewConstraints在视图控制器中覆盖来完成。只是不要忘记打电话[super updateViewConstraints]

  • 在您的情况下无需处理sizeToFit:方法。

于 2014-07-09T13:37:34.517 回答