【问题标题】:NSLayout Constraint to hide UIViewNSLayoutConstraint 隐藏 UIView
【发布时间】:2017-08-27 17:10:12
【问题描述】:

我正在尝试重新创建它,但我不知道如何连接这个约束:

情节提要中的RootViewController 存在一个限制,其中未选中“已安装”复选框:

但看起来它与RootViewController 有关系,即使它隐藏了第二个容器视图:

我尝试使用@IBOutlet weak var hideCameraConstraint: NSLayoutConstraint! 在代码中创建IBOutlet,然后将连接拖到情节提要中的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)
}

有什么想法吗?谢谢!

【问题讨论】:

  • 不设置isActive,可以试试修改常量属性吗?
  • 您要隐藏和取消隐藏某些操作的视图吗?
  • @carlos21 我真的只是想弄清楚如何主要在情节提要上添加该约束。你知道怎么做吗?
  • @Nazir 是的,我想隐藏和取消隐藏相机视图。基本上能够显示或隐藏拍照的能力。

标签: ios swift xcode uiview storyboard


【解决方案1】:

你必须这样使用

    hideCameraConstraint.constant += anyValue

在约束条件下,您必须设置整数值而不是布尔值。

【讨论】:

  • 感谢您的回复!不过,我将如何在 Storyboard 中连接约束?
  • @SRMR 我给你的例子假设你在故事板中使用 UIView 并将其前导约束设置为 50,那么你必须将这些约束附加到你创建的约束,即 hideCameraConstraint。现在在程序中,您可以更改 UIView 的前导约束。示例 - hideCameraConstraint.constant = 20 ,这意味着现在您的 UIView 从 20 开始而不是 50,通过这种方式您可以以编程方式更改约束。如果你喜欢我的回答,请点赞我的回答。
  • 对,我正在寻找的是如何连接我在情节提要中寻找的约束
【解决方案2】:

如果您正在寻找使用约束隐藏和取消隐藏视图,请使用以下方法:

  1. 使用height == 0 设置约束添加标识符hideViewIdentifier
  2. 将高度约束优先级设置为250
  3. 将冲突约束的优先级设置为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;
        }
    }];
}

【讨论】:

  • 这是我想找的东西,今天让我试试吧!
  • 我正在试图弄清楚如何手动拖动约束仍然
  • 拖过来是什么意思?
  • 故事板上的“隐藏相机约束”
  • 我认为最好是开始聊天,因为这是话题,不适合进行长时间的交谈
猜你喜欢
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
相关资源
最近更新 更多