2014-07-09 19 views
2

我需要创建两个UILabel,这些UILabel应根据UITableViewCell中的文本大小动态调整大小。 第一个UILabel应该增长(基于文本)到左边,始终对齐15点到右边界。 第二个UILabel应该(也会动态地向左移动)并且与第一个UILabel的右侧对齐7个点。带autoLayout的动态视图更改(即UILabel)

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

  1. 这能在故事板只是做了(没有密码)?
  2. 我在故事板布局中定义了一个水平约束,在代码中定义了sizeToFit:。 ,发现水平约束被覆盖。 尝试变更帧在viewDidLoad:但不是所有的进行了更新(用0延迟执行选择器 - 中的所有单元的更新所有标签,但创造了一秒的延迟)

请指教, 由于阿萨夫

回答

1

问题1)

其实你可以在代码中做到这一点。但我认为Interface Builder更适合您的情况。

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

如果您没有为您的标签设置宽度限制,我认为您的故事板中有警告。

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

但是你有两个标签,你应该让autolayout知道标签之间有冲突时哪个标签更重要。 - 前。如果标签的文字较长,则标签的文字不会缩短(...)。

为此,请在界面构建器中设置拥抱(或压缩)优先级。

问题2)

[viewDidLoad中:]不适合变化的几何形状的东西。如果您需要更多信息,请告诉我,UIViewController的视图将在[viewWillAppear:]

之后添加到视图层次结构中。

1

您可以在代码或StoryBoard自动布局中获得结果。这里是故事板自动布局的步骤:

确保您有电池有两个标签以及自动布局约束(清除它们,如果有的话)

2.添加约束Label 1

TwoLabelsCell_Label1_Constraints

3。添加约束Label 2

TwoLabelsCell_Label2_Constraints

结果:

TwoLabelsCell_Result

备注:

  • 与手法布局应该通过覆盖您的视图控制器中的updateViewConstraints来完成。只要不要忘记拨打[super updateViewConstraints]

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

+0

@Asaf你检查过解决方案吗?它能解决你的问题吗? – Keenle