使用自动布局调整视图大小

时间:2014-05-15 08:04:16

标签: objective-c uiview autolayout

我有一个自定义UIView,其中列出了"子视图"使用带有一些垂直间距约束的自动布局。

@"V:|-(10)-[_label]-(10)-|

现在,此视图已添加到控制器的视图中,我希望可以折叠/展开它。为此,我添加了一个高度约束,我将其调整为0或给定高度。

代码:

- (void)toggleView:(id)sender
{
    self.viewVisible = !self.viewVisible;
    self.headerHeightConstraint.constant = self.viewVisible ? 100 : 0;
    [UIView animateWithDuration:0.5 animations:^{
        [self.view layoutIfNeeded];
    }];
}

问题在于,当我折叠视图时,我有一些自动布局异常,因为视图的0高度与内部标签视图的垂直间距冲突。

所以问题是,如何折叠具有内部高度约束的视图?

" Here"是一个示例项目。

欢呼声, 扬

1 个答案:

答案 0 :(得分:0)

只需更改垂直间距的优先级即可。 UILayoutConstraints在创建它们时默认优先级为1000,因此您只需将垂直间距的优先级更改为小于此值即可,因此高度约束将始终优先于垂直间距。

将视觉格式更改为ff:

@"V:|-(10@999)-[_label]-(10@999)-|