在我的基于约束的布局中有3个 ImageView ,我必须在某些情况下删除第二个ImageView,我试图隐藏图像视图但问题是 ImageView1 <之间有空格/ strong>和 ImageView3 并且在隐藏其中一个视图后布局没有得到更新,我尝试了一些在堆栈溢出时给出的解决方案但是没有得到解决。这样的事情
(void)viewDidLoad {
[super viewDidLoad];
Imageview2.hidden = YES;
[self setNeedsLayout];
}
我也试过[self.view LayoutIfNeeded]
,但没有相同的结果。有没有更好的方法来做到这一点。请帮我解决这个问题。
答案 0 :(得分:1)
由于它是基于约束的布局,您必须将宽度和高度约束设置为0,同时将前导空格设置为第二个图像视图的0(假设水平布局),如果是垂直,则第二个视图的顶部和底部间距为0.即使隐藏UIImageView
,约束仍然有效。
或者,更简单的方法是将所有三个项目放入UIStackView
,然后隐藏所需的元素。堆栈视图在尊重autoLayout
的同时为您处理所有这些。据我所知,当您隐藏UIStackView
我建议您使用UIStackView
如果您的应用仅支持 iOS 9及以上版本。
答案 1 :(得分:1)
隐藏你的imageView / View时只设置恒定高度0。
_view.yourImageView.hidden = YES;
_view.yourImageViewConstraintHeight.constant = 0;