2017-04-02 54 views
0

我试图重建,但我无法弄清楚如何挂钩该约束了:这里的“安装”复选框NSLayout约束隐藏的UIView

有一个约束在故事板RootViewController未选中:

enter image description here

但它看起来像它的关系是,即使它隐藏了第二集装箱查看RootViewController

enter image description here

我试过在@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) 
} 

任何想法?谢谢!

+0

而不是设置isActive的,你可以尝试修改常量属性? – carlos21

+0

你想隐藏并取消隐藏某些操作的视图吗? – Nazir

+0

@ carlos21我真的只是想弄清楚如何在故事板上添加该约束。你知道怎么做吗? – SRMR

回答

1

如果您正在寻找隐藏和取消隐藏与约束视图中使用这样的方法:

  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; 
     } 
    }]; 
} 
+0

这是我认为我期待的事情,让我今天尝试一下吧! – SRMR

+0

我想弄清楚如何手动拖动约束仍然 – SRMR

+0

你是什么意思与拖动? – Nazir

2

你必须使用类似这样的

hideCameraConstraint.constant += anyValue 

在约束你必须设置整数值不是一个布尔值。

+0

感谢您的回应!但是我怎样才能在Storyboard中绑定约束呢? – SRMR

+0

@SRMR我给你的例子假设你在故事板中使用UIView并将其前导约束设置为50,那么你必须将这些约束附加到你创建的约束上,即hideCameraConstraint。现在在程序中,您可以更改您的UIView的主要约束。例如 - hideCameraConstraint.constant = 20,它表示现在你的UIView从20开始不是50,这样你就可以通过编程来改变约束。如果你喜欢我的回答,请提高我的答案。 –

+0

对,我在寻找的是如何连接我在故事板中寻找的约束条件 – SRMR