隐藏UIView并调整其他小部件以占用空间吗?

时间:2018-07-10 08:34:19

标签: ios swift uiview

我有一个屏幕,其中包含三个组件:HeaderCollectionViewbottomView。我只想在某些情况下显示底视图。我尝试为该底视图设置isHidden属性,但该属性隐藏了视图,但collectionView没有占用空间。如果要隐藏底视图,我想调整collectionView来占用剩余空间。请指出正确的方向。

4 个答案:

答案 0 :(得分:1)

连接底视图的高度约束并以此来切换隐藏/显示

self.bottomHeight.constant = show ? 100 : 0
self.view.layoutIfNeeded()

答案 1 :(得分:0)

isHidden属性仅更改视图的可见性,而不更改约束。

您可以将collectionview底部约束连接到底部视图的顶部,然后将底部视图底部约束连接到父视图的底部。

然后获取bottomView的高度约束的IBOutlet并按照以下代码更改其常量:

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

...

bottomContraint.constant = 0 // To hide
yourView.layoutIfNeeded()

答案 2 :(得分:0)

尝试将底视图的高度约束设置为0。这样,它将隐藏底视图,并且集合将根据约束调整大小。

请注意,您应该赋予以下约束: 标头:要进行预览的顶部尾部空间(或safeAreaLayoutGuide)和固定高度。 集合:前导到超级视图,顶部到标题。

页脚:将导览图的底部引导至超级视图(或更好:safeAreaLayoutGuide),要收集的顶部空间以及固定高度

您需要更新footerview的 FixedHeight 约束的常量。

答案 3 :(得分:0)

使用UIStackView解决了该问题。谢谢大家。