【问题标题】:iOS autolayout multiple heightiOS自动布局多个高度
【发布时间】:2015-03-26 18:25:23
【问题描述】:

我想在不同的屏幕上看到可变的高度。 比方说,我想要 3.5 英寸屏幕中视图的高度为 80 像素。

100px 4.0 英寸屏幕

120px 4.5 英寸屏幕

和 4.7 英寸屏幕中的 140。

使用自动布局实现它的最佳方法是什么?

【问题讨论】:

    标签: ios xcode6 autolayout


    【解决方案1】:

    将视图与 AutoLayout 对齐,例如与超级视图的顶部和侧面对齐,但设置一个固定的高度约束,如下所示:

    然后为高度约束创建一个出口。 在您的班级中,您现在可以通过以下方式更改高度:

    self.myHeightConstraint.constant = 120;
    

    编辑:你必须取消选中“宽度”复选标记,我创建屏幕截图时没有注意到它被选中...

    【讨论】:

      【解决方案2】:

      如果您不需要这么高的准确性,我认为最好的方法是使用关系乘数。如果屏幕变大,您的视图将变大。

      您可以通过代码或Interface Builder 完成此操作

      - (void) viewWillAppear:(BOOL)animated
      {
      
      NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:upperview
                                                                   attribute:NSLayoutAttributeHeight 
                                                                   relatedBy:0 
                                                                      toItem:self.view
                                                                   attribute:NSLayoutAttributeHeight
                                                                  multiplier:.5 
                                                                    constant:0];
      [self.view addConstraint:constraint];
      }
      

      【讨论】:

        【解决方案3】:

        在视图的高度约束上创建一个IBOutlet。之后,您将能够在代码中设置约束常量(在检查屏幕高度之后)。当然,您还必须设置其他约束,但请记住,您的视图高度会发生变化(或在考虑可能发生冲突的情况下提交约束)

        ex(快速):

        let height = self.view.frame.size.height
        if height == 568 { //iPhone 5 size
        
             self.viewHeight_Constraint.constant = 120.0
             self.myView.layoutIfNeeded();
        
        }
        

        我在layoutIfNeeded 上取得了成功,但请查看here 的答案以获取理由。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-11
          • 2017-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-09
          相关资源
          最近更新 更多