隐藏 UIView 并调整其他小部件以占用空间?
Posted
技术标签:
【中文标题】隐藏 UIView 并调整其他小部件以占用空间?【英文标题】:Hide UIView and adjust the other widgets to take space? 【发布时间】:2018-07-10 08:34:19 【问题描述】:我有一个屏幕,其中包含三个组件,Header
、CollectionView
和 bottomView
。我只想在某些条件下显示底部视图。我尝试为该底部视图设置isHidden
属性,它隐藏了视图,但collectionView
没有占用空间。如果底部视图被隐藏,我想调整 collectionView
以占用剩余空间。请指出正确的方向。
【问题讨论】:
你在使用约束吗?UIStackView
可能是另一种选择 - 堆栈视图中隐藏的任何元素都会自动缩小到零宽度/高度。
我建议在这种情况下使用 UIStackView。
【参考方案1】:
连接底部视图的高度约束并以此切换隐藏/显示
self.bottomHeight.constant = show ? 100 : 0
self.view.layoutIfNeeded()
【讨论】:
做了同样的事情但它不起作用 self.bottomView.isHidden = false self.bottomViewHeight.constant = 100 self.calculateOrderTotal() self.view.layoutIfNeeded()【参考方案2】:isHidden 属性只改变视图的可见性,不改变约束。
您可以将collectionview底部约束连接到底部视图的顶部,然后将底部视图底部约束连接到父视图的底部。
然后得到一个底部视图的高度约束的 IBOutlet 并像下面的代码一样更改他的常量:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *bottomContraint;
...
bottomContraint.constant = 0 // To hide
yourView.layoutIfNeeded()
【讨论】:
【参考方案3】:尝试将底部视图的高度约束设置为0。这样,它将隐藏底部视图,并且集合将根据约束调整大小。
请注意,您应该给出如下约束: 标题:superview(或 safeAreaLayoutGuide)的前导空间和固定高度。 集合:前导到超级视图,顶部空间到标题。
页脚:到超级视图(或更好:safeAreaLayoutGuide)、顶部空间到集合,以及固定高度。
你需要更新footerview的FixedHeight约束的常量。
【讨论】:
以上是关于隐藏 UIView 并调整其他小部件以占用空间?的主要内容,如果未能解决你的问题,请参考以下文章
如何隐藏 UIView 并删除“空白”空间? -iOS/单触