将新视图添加到层​​次结构时,Autolayout会出现问题

时间:2015-07-26 14:21:57

标签: ios uitableview uiview autolayout ios-autolayout

当我有一个通过IB应用约束并在其视图层次结构中添加新UIView的UIView时,我正在努力度过几个场景。这是怎么回事:

我有一个全屏UITableView,应用了以下约束,因此可以很好地扩展iOS设备的所有分辨率:

enter image description here

现在我想在UITableView上面添加一个UIView作为一种工具栏。

现在,我成功添加此视图的唯一可行方法是将其添加到TableView之上,以便它覆盖tableview的顶部。我想要实现的是新添加的UIView按下表,因此两者都可见。我尝试了几个方面,包括在桌面视图上方的IB中添加容器视图,但这根本不起作用。

所以我的问题是:有没有办法动态编辑,删除和添加新的约束到视图层次结构,理想情况下支持动画?

1 个答案:

答案 0 :(得分:1)

您可以为约束创建IBOutlets,就像任何视图一样。 每个NSLayoutConstraint对象都有一个constant属性,您可以随时在代码中设置它(它是约束的值)。

因此,您将在Interface Builder上创建两个视图,并将表视图的顶部约束到新视图的底部。 新视图将具有设置的高度约束,您可以创建该高度约束的出口,以使该视图在代码中显示或消失。 还有其他可能的解决方案,但我认为这个是最简单的。

代码将是这样的:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topHeightConstraint;

设置值:

self.topHeightConstraint.constant = 60;

并为其制作动画:

[UIView animateWithDuration:0.6 animations:^{
            self.topHeightConstraint.constant = 60;
            [self.view layoutIfNeeded];
}];