当我有一个通过IB应用约束并在其视图层次结构中添加新UIView的UIView时,我正在努力度过几个场景。这是怎么回事:
我有一个全屏UITableView,应用了以下约束,因此可以很好地扩展iOS设备的所有分辨率:
现在我想在UITableView上面添加一个UIView作为一种工具栏。
现在,我成功添加此视图的唯一可行方法是将其添加到TableView之上,以便它覆盖tableview的顶部。我想要实现的是新添加的UIView按下表,因此两者都可见。我尝试了几个方面,包括在桌面视图上方的IB中添加容器视图,但这根本不起作用。
所以我的问题是:有没有办法动态编辑,删除和添加新的约束到视图层次结构,理想情况下支持动画?
答案 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];
}];