在我的UITableViewCell中,我有两个UIViews堆叠在一起。我们称它们为Top和Bottom。
顶视图具有对superview的前导、拖尾和顶部约束。它的高度约束为20。
底部视图具有对superview的前导、拖尾和底部约束。它的高度约束为20。
顶部和底部具有垂直约束。
以编程方式“隐藏”底部视图(并让顶部视图接触到superview的底部)的最简单方法是什么?我不喜欢创建更多的约束,因为我是在storyboard中设计的,而且我不喜欢激活/禁用约束。
发布于 2016-05-02 09:20:00
如果不需要以iOS 8或更低版本为目标,最简单的方法是将两个视图嵌入到UIStackView
中。然后,只需通过设置视图的hidden
属性来隐藏视图,堆栈视图就会变为automatically update the layout
每当在arrangedSubviews
数组中添加、删除或插入视图时,或者只要排列的子视图的hidden
属性发生更改,堆栈视图就会自动更新其布局。
由于您的父视图是一个表格视图单元格,因此您可能需要告诉表格视图重新计算单元格的高度(除非您正在使用自动调整单元格的大小,否则这可能会自动工作,我不确定)。您可以通过向表视图发送空的beginUpdates
/endUpdates
对来强制重新计算:
tableView.beginUpdates()
tableView.endUpdates()
发布于 2016-04-30 19:05:21
正确的方式:
顶视图具有对superview的前导、拖尾和顶部约束。它的高度约束为20。
底部视图具有对superview的前导、拖尾和底部约束,以及对顶部视图的顶部约束。
而不只是在单元格内为height Constratint创建一个属性:
@property (nonatomic, weak) IBOutlet NSLayoutConstraint *heightConstraint;
然后当你需要改变大小时,调用这个代码:
self.heightConstraint.constant = 40;
[self.view layoutIfNeeded];
或者使用动画:
self.heightConstraint.constant = 40;
[UIView animateWithDuration:0.3 animations:^{
[self.contentView layoutIfNeeded];
}];
发布于 2016-04-30 19:01:04
可以将俯视图的高度约束增加到40,将底视图的高度约束减少到0。就我个人而言,我更喜欢将底部视图高度约束设置为20,并为topView底部添加一个等于bottomView顶部的约束。如果我想隐藏高度,我只需将bottomView的高度约束更改为0。希望能有所帮助。如果你需要,我可以在Xcode中张贴一些图片。
https://stackoverflow.com/questions/36958500
复制