我正在尝试重新创建这个,但我无法弄清楚如何挂钩这个约束:
故事板中的RootViewController
存在约束,其中未选中“已安装”复选框:
但看起来它的关系是RootViewController
,即使它隐藏了第二个容器视图:
我尝试使用IBOutlet
在代码中创建@IBOutlet weak var hideCameraConstraint: NSLayoutConstraint!
,然后将连接拖到故事板中的RootViewController
,但这不起作用。
但是我需要使用约束,因为在代码中,摄像机可见性是用它设置的:
fileprivate func setCameraVisibility(_ visible: Bool) {
hideCameraConstraint.isActive = !visible
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 0, options: .beginFromCurrentState, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
有什么想法吗?谢谢!
答案 0 :(得分:2)
你必须像这样使用
hideCameraConstraint.constant += anyValue
在约束中,您必须设置整数值而不是布尔值。
答案 1 :(得分:1)
如果您正在寻找隐藏和取消隐藏视图的约束,请使用以下方法:
height == 0
添加标识符hideViewIdentifier
250
900
冲突的约束(在您的情况下,这将是底部布局或实际高度)然后更新优先级以隐藏250
以显示视图和990
以隐藏视图
//@update
- (void)upadteView:(UIView *)view hide:(BOOL)hide {
[view.constraints enumerateObjectsUsingBlock:^(__kindof NSLayoutConstraint * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj.identifier isEqual:@"hideViewIdentifier"]) {
obj.priority = (hide) ? 990 : 250;
*stop = YES;
return;
}
}];
}