如何以编程方式将视图的底部约束从安全区域更改为超级视图?

Posted

技术标签:

【中文标题】如何以编程方式将视图的底部约束从安全区域更改为超级视图?【英文标题】:how to change bottom constraint of a view from safe area to superview programmatically? 【发布时间】:2020-05-25 10:24:30 【问题描述】:

我认为底部被限制在这样的安全区域

我需要将其更改为以编程方式限制为超级视图。

我不知道如何处理那个约束引用

 @IBOutlet var sheetViewBottomConstraint: NSLayoutConstraint!

【问题讨论】:

你的意思是用程序化方法替换这个约束吧? 为什么必须以编程方式更改约束?不能在storyboard里设置成superview吗? 是的,只需要您更改项目,只需点击几下即可完成。 @vacawama 上面的视图控制器将用于其他视图控制器。我需要将它限制在安全区域(如果标签栏可用,对于导航堆栈中的根视图控制器),但对于隐藏标签栏的其他视图控制器(在导航堆栈顶部),我需要限制它对于superview,如果我将它限制在安全区域看起来很奇怪,这就是为什么我需要以编程方式更改它。如果我制作两个单独的视图,我会很懒惰。我稍后会尝试 frankenstain 回答 【参考方案1】:

您可以删除情节提要上的约束并通过如下代码给出约束:

sheetView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

注意:要以编程方式更改约束,您不需要 @IBOutlet

【讨论】:

为什么不在故事板上添加这个约束? 大声笑,你应该问提出问题的人。

以上是关于如何以编程方式将视图的底部约束从安全区域更改为超级视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中以编程方式从 UIView 中删除安全区域?

iOS - 如何以编程方式在安全区域内创建视图[重复]

向底部锚添加约束是向超级视图底部添加约束

以编程方式从集合视图下方设置标签约束

如何动态修改日历高度?

以编程方式从超级视图中删除视图后更新约束/框架(自动布局)