我的应用程序有一个根视图控制器,其中包含容器视图和广告横幅。容器视图的底部使用自动布局固定到广告横幅的顶部。
我的要求是,当广告横幅被删除,容器视图必须调整到全屏。
我做不到。我删除了广告横幅,要么设置为零,要么从SuperView中删除。但是容器视图仍然保持相同的大小和位置,在广告横幅所在的底部留下空白。
我还尝试用这段代码设置容器视图的新约束

containerViewBottomConstraint = NSLayoutConstraint(item: containerView, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: view.superview, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)

但随后应用程序会因此错误而崩溃。
由于未捕获的异常“nsInvalidArgumentException”而终止应用程序,原因:'*+[nsLayoutConstraintWithitem:attribute:relatedBy:to item:attribute:multiplier:constant:]:乘数为0或零的第二个项以及第一个属性的位置将创建一个位置等于常量的非法约束。位置属性必须成对指定。
swift - 删除广告横幅,不能使应用变为全屏-LMLPHP

最佳答案

假设广告横幅的高度是50,那么只需获取容器视图的底部约束作为类的出口。
然后按如下方式调整约束:

containerViewBottomConstraint.constant = -50

您可能需要调用self.view.layoutIfNeeded(),以便用新的约束刷新视图。
祝你好运!

09-26 16:51