我的应用有一个根视图控制器,其中包含容器视图和广告横幅。容器视图的底部使用自动布局固定到广告横幅的顶部。
我的要求是删除广告横幅时,容器视图必须调整为全屏。
我无法做到。我删除了广告横幅,方法是将其设置为nil或将其从superview中删除。但是容器视图仍然保持相同的大小和相同的位置,在广告横幅所在的底部留下了空白区域。
我还尝试使用此代码
为Container View设置新约束containerViewBottomConstraint = NSLayoutConstraint(item: containerView, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: view.superview, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)
但随后App崩溃了。
由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' * + [NSLayoutConstraint constraintWithItem:属性:relatedBy:toItem:attribute:multiplier:constant:]:乘数0或者a第二个项目与第一个属性的位置一起创建一个等于常量的位置的非法约束。必须成对指定位置属性。
答案 0 :(得分:2)
假设广告横幅高度为50,因此只需将容器视图的底部约束作为您班级的出口。
然后通过这样做来调整约束:
containerViewBottomConstraint.constant = -50
您可能需要调用self.view.layoutIfNeeded()
才能使用新约束刷新视图。