iOS - 更改2 UIView

时间:2017-06-12 09:11:47

标签: ios objective-c nslayoutconstraint

对于单个XIB文件,我有3种不同的方案。

这是XIB文件,我有3个不同的UIView。

enter image description here

我的情景是:

  • 显示视图2,隐藏视图1和视图3。
  • 显示视图1和视图3,隐藏视图2。
  • 显示视图1,视图2和视图3。

我的问题是第二种情况,只显示了视图1和视图3。

我可以隐藏View 2,但我希望这个特定情况能让View 1和View 3更接近。

enter image description here

我该怎么办?

我试过这样的事但没有成功。

-(void)setConstraints {

    [NSLayoutConstraint constraintWithItem:_infoView1
                                 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual
                                    toItem:_infoView3 attribute:NSLayoutAttributeBottom
                                multiplier:1.0 constant:0];
}

4 个答案:

答案 0 :(得分:1)

Step 1 : Connect top constraint of view 2 with view 1 similarly connect top constraint of view 3 with view 2 then create and map height constraints for view 1 view 2 and view 3.

Step 2 : For scenarios mentioned in question, put conditions for your cases and do steps mentioned below

1) View 2 is displayed and View 1 and View 3 are hidden.
set height constraint for view 1 and view 3 to zero 
heightConstraintOfView1.constant = 0
heightConstraintOfView3.constant = 0

2) View 1 and View 3 are displayed and View 2 is hidden.
set height constraint for view 2 to zero 
heightConstraintOfView2.constant = 0

3) View 1, View 2 and View 3 are displayed.
Don’t set height constraint for any view to zero.

我假设所有其他约束都已正确设置。

答案 1 :(得分:0)

从storyBoard设置约束: -

1:视图2设置中心(水平和垂直),前导和尾随(零)和高度根据Xib的高度设置。

2:视图1设置视图2的相等前导,尾随和高度以及视图2中的底部空间为零。

3:视图3设置视图2的相等前导,尾随和高度以及视图2中的顶部空间为零。

•   View 2 is displayed and View 1 and View 3 are hidden.

     View2.isHidden = false
     View1.isHidden = true
     View3.isHidden = true

•显示视图1和视图3,隐藏视图2.

     View2.isHidden = true
     View1.isHidden = false
     View3.isHidden = false

•显示视图1,视图2和视图3。

      View2.isHidden = false
      View1.isHidden = false
      View3.isHidden = false

根据需要设置颜色。

答案 2 :(得分:0)

是否要使用非隐藏视图填充父视图,以保持父视图高度与以前相同?

答案 3 :(得分:0)

为view1,view2和view3指定高度约束。 为这些约束创建出口 - heightConstraintView1,heightConstraintView2和heightConstraintView3。

对于这种情况,你想要隐藏view2,将view2的高度约束设置为你想要的高度。

heightConstraintView2.constant = 5

在其他情况下,将高度约束设置为所有视图的相等值。

heightConstraint1.constant = heightConstraint2.constant = heightConstraint3.constant = <A constant value>