我需要创建两个UILabel,应根据UITableViewCell
内的文本大小动态调整大小。
第一个UILabel
应该增长(基于文字)到左侧,并始终将15个点对齐到右边框。
第二个UILabel
应该(也动态向左增长)并在第一个UILabel右侧对齐7个点。
... [label 2]<--7p-->[label 1]<--15p-->|right cell border
sizeToFit:
。
并发现水平约束被覆盖了。
试图更改viewDidLoad:
中的帧,但并非所有帧都更新(执行选择器有0延迟 - 更新所有单元格中的所有标签,但创建了一秒延迟。)请指教, 谢谢Asaf
答案 0 :(得分:1)
问题1)
实际上你可以在代码中做到这一点。但我认为Interface Builder在您的情况下更好。
我认为您不必在代码中使用[sizeToFit:]。
如果您没有为标签设置宽度限制,我认为您的故事板中有警告。
像UILabel这样的UIControl,UIButton具有内在大小,因为它们具有文本内容。所以你不需要设置宽度约束。但是你有两个标签,当标签之间存在冲突时,你应该让autolayout知道哪个标签更重要。 - 前。如果标签有长文本,则显示哪个标签的文本而不缩短(...)。
为此,请在Interface Builder中设置Hugging(或Compression)优先级。
问题2)
[viewDidLoad:]不适合更改几何体。在[viewWillAppear:]
之后,视图层次结构中添加了UIViewController的视图如果您需要更多信息,请告诉我们。
答案 1 :(得分:1)
您可以使用代码或使用StoryBoard自动布局来实现结果。以下是Storyboard自动布局的步骤:
1。确保您的单元格包含两个标签且没有自动布局限制(如果有则清除它们)
2。向Label 1
添加约束:
3. 向Label 2
添加约束:
<强>结果:强>
<强>说明:强>
应通过覆盖视图控制器中的updateViewConstraints
来完成布局操作。别忘了给[super updateViewConstraints]
打个电话。
在您的案例中无需处理sizeToFit:
方法。