【问题标题】:View height should change as per view width: Auto Layout视图高度应根据视图宽度更改:自动布局
【发布时间】:2016-03-09 07:05:11
【问题描述】:

这里我的视图宽度是根据超级视图宽度的比例变化的。此外,高度根据超级视图高度的比率而变化。但是,我想将我的高度固定为与视图宽度相同。

具体来说,类似:view.height = view.width

问题是,如果我按照比例设置,我的超级视图高度和宽度则 iPhone 高度大于宽度。以下是一些截图,说明了我的观点。

iPhone 屏幕

iPad 屏幕

在上面的屏幕中,iPad 看起来不错,但对于 iPhone 的高度,它不是按照比例。

【问题讨论】:

    标签: ios nslayoutconstraint autolayout


    【解决方案1】:

    设置view的宽高比为1:1,然后设置view和superview的比例宽度,调整约束乘数得到你想要的view大小。

    这样视图将始终具有相同的宽度和高度,并且会根据父视图的宽度而变化。

    【讨论】:

    • 对于 iPhone 屏幕高度和宽度比例不相等,因此上述解决方案将不起作用。
    • 如果我正确理解了您的问题,您需要具有相同宽度和高度的视图。并且该宽度(和高度)应该与超级视图的宽度成正比。如果您按照我的回答中的说明进行操作,这正是您将得到的。与设备无关。
    【解决方案2】:

    我得到了解决方案:

    步骤

    • 首先从视图中移除高度限制。
    • 在视图上通过代码添加以下新约束

      let equalConstraint = NSLayoutConstraint(item: self.imgProfile,
                  attribute:NSLayoutAttribute.Width,
                  relatedBy:NSLayoutRelation.Equal,
                  toItem: self.imgProfile,
                  attribute: NSLayoutAttribute.Height,
                  multiplier: 1.0,
                  constant: 0.0);
              self.imgProfile.addConstraint(equalConstraint)
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-02
      • 2017-07-23
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 2013-11-21
      • 2016-04-18
      • 2022-01-14
      相关资源
      最近更新 更多