从调整视图大小停止自动布局

时间:2014-02-12 15:01:31

标签: ios objective-c uiview autolayout

使用故事板我添加了一个高度为5px的UIView。

在运行时,该视图的高度会增加(最多可达25px)。

当方向改变时,视图的高度将恢复为原始的5px。

我该怎样防止这种情况?我希望高度保持在方向改变之前的任何高度。

当然,我可以检测到方向变化,然后将其更改回来,但看起来很邋,,因为它会缩小然后立即增加。

编辑:这可能是也可能不是自动布局问题。或者可能只是故事板的默认行为。

3 个答案:

答案 0 :(得分:1)

添加固定高度的约束,您可能还需要删除约束。如果您显示代码或解释如何设置常量,可以给出更详细的答案。

其他答案是删除拉伸视图大小的约束,可能是您有相互冲突的约束。

还有一个答案可能是你需要调整另一个约束的优先级,也许是视图之间的间距。再详细一点=更好的答案。

答案 1 :(得分:0)

覆盖-layoutSubviews是不正确的方法。如果您正在使用自动布局,则应通过以编程方式修改其约束来调整视图的高度。

为视图的高度约束创建一个属性:

@property (strong, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;

我把IBOutlet放在那里,因为你说你在故事板中制作约束。只需将高度约束拖动到该属性即可进行连接。 (您也可以通过编程方式创建约束,在这种情况下,您不会使用IBOutlet。)

然后,每当你想改变高度时:

self.heightConstraint.constant = 25;

答案 2 :(得分:-2)

问题的解决方案是继承UIView并覆盖 - (void)layoutSubviews

In - (void)layoutSubviews是我设置所需高度的地方