在我的基于约束的布局中有 3 个 ImageView,在某些情况下我必须删除第二个 ImageView,我尝试隐藏 ImageView 但问题是 ImageView1 和 ImageView3 并且布局在隐藏其中一个 View 后没有得到更新,我尝试了一些关于堆栈溢出的解决方案但没有得到解决。试过这样的事情
(void)viewDidLoad {
[super viewDidLoad];
Imageview2.hidden = YES;
[self setNeedsLayout];
}
我也试过 [self.view LayoutIfNeeded]
但没有改变同样的结果。有没有更好的方法来做到这一点。请帮我解决这个问题。
最佳答案
由于它是基于约束的布局,您必须将宽度和高度约束设置为 0,同时将第二个 ImageView 的前导空格和尾随空格设置为 0(假设是水平布局),如果是垂直布局,则第二个 View 的顶部和底部间距为 0。即使 UIImageView
被隐藏,约束仍然有效。
或者,一种更简单的方法是将所有三个项目放入一个UIStackView
中,然后隐藏所需的元素。堆栈 View 在尊重 autoLayout
的同时为您处理所有这些。据我所知,当您在 UIStackView
我建议使用UIStackView
如果您的应用支持iOS 9 及以上版本。
关于ios - 隐藏 View 后如何更新布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50894565/