2015-05-25 73 views
3

我需要用一个UIControl自动布局故事板UIView。 UIControl应居中,需要具有1:1的宽高比,并且应始终使用90%的总观宽度或高度,具体取决于设备方向而不削减。IOS8 Autolayout相对宽度/高度

我加4个约束

  1. 中心Y调整 - 视图 - 上海华
  2. 中心X对齐 - 视图 - 上海华
  3. 相等宽度 - 视图 - 上海华与乘数设定为0.9
  4. 宽高比 - 视图 - 倍数设置为1:1的视图

此设置在纵向模式下正常工作,但lan失败dscape模式。 (见下图)

我需要什么样的约束来解决这个问题。如果设备旋转,我是否必须更改约束条件?

人像模式 Portrait mode

风景模式 - 错 Landscape mode - wrong

风景模式 - 实体模型。这就是我想要的。 Landscape mode - ok

回答

4

这里是一个办法做到这一点:

  1. 从上面列出的四个限制开始:中心X,中心Y,等宽(0.9乘数)和宽高比,全部优先1000.
  2. 将等宽的优先级更改为750.这将允许自动如果需要,布局忽略或修改此约束。
  3. 添加一个等高(视图 - 超视图)约束,但不是等于,使其小于或等于乘以0.9。将其优先级设置为1000.

现在,当您处于纵向模式时,Auto Layout将能够像以前一样将红色框的宽度设置为90%,以满足您的所有约束条件。当您切换到横向时,平等高度限制将确保红色框不会超过高度的90%,因为此限制具有1000的优先级,但自动布局也会使框尽可能大,以尝试最好服务于等宽度限制。

1

您强制您的视图宽度和纵横比。因此,当宽度增加时,自动布局会强制您的高度增长以保持1:1的宽高比。 你必须:

  • 设置约束你的高度和宽度是<= 0.9* Superview与1000优先
  • 您的高度和宽度设置的限制是== 0.9* Superview有750优先

我没“T尝试,但它应该更好看;)

+0

谢谢昆汀。你的回答很好,但并不完全符合我的需要。我添加了一个新的截图到我原来的问题,以可视化我的问题。 –

+0

您是否保持1:1约束(1000优先级)?如果没有,把它放回去! –