移除 UIView 后重置其他组件的约束
Posted
技术标签:
【中文标题】移除 UIView 后重置其他组件的约束【英文标题】:Reset Constraints for the other components after removing a UIView 【发布时间】:2018-05-13 10:03:05 【问题描述】:我有一个横幅 UIView
,如果用户有 NoAds 功能,我想删除它。
问题是在我删除横幅 UIView
后,我无法找到一种方法来设置顶视图的约束来包裹 ViewController
的其余部分。
这里有一些图片让你更好地理解。
我使用removeFromSuperview()
方法删除了横幅UIView
。
在情节提要上,我的底部约束设置为 0,朝向最近的邻居,当时是 UIView
横幅。问题是,在我移除 Banner UIView
后,我想将上面 UIView 的底部约束设置为 0,朝向 SuperView。
提前致谢。
【问题讨论】:
试试这个NSLayoutConstraint.deactivate(myView.constraints)
我似乎无法找到对我有帮助的方法。我希望顶部 UIView 的底部约束更改为 0 但不朝向横幅 UIView (已被删除)。我希望它在 SuperView 结束时变为 0。
好的,你可以试试这个发送固定高度约束到banner UIView
当你删除它们时设置myHeightConstraint.constant = 0 removeFromSuperview()
【参考方案1】:
只要你可以使用简单的解决方案
你可以设置 TopView , Banner in Vertical StackView
with Distribution
Fill
对齐填充
当 Stack-view 项目之一 隐藏 然后另一个将展开
查看图片
如果你需要使用 Constrain,你有 activate
和 deactivate
然后调用 setNeedsLayout()
【讨论】:
做到了!谢谢,甚至不知道这个选项。 :P 我有一个静态 AdManager 类,用于保存所有横幅广告的数组。一旦用户购买,我只需通过循环数组从超级视图中删除所有横幅。由于横幅都在堆栈视图中,它会自动工作。以上是关于移除 UIView 后重置其他组件的约束的主要内容,如果未能解决你的问题,请参考以下文章
becomeFirstResponder 重置其他视图的 x/y 位置
隐藏 UIView 后如何重置 tableview 内容高度