IOS8 具有相对宽度/高度的自动布局
IOS8 Autolayout with relative width / height
我需要使用单个 UIControl 自动布局故事板 UIView。 UIControl 应该居中,需要具有 1:1 的宽高比,并且应该始终使用 90% 的超级视图宽度或高度,具体取决于设备方向而不进行剪裁。
我添加了 4 个约束条件
- 中心 Y 对齐 - 视图 - 超级视图
- 中心 X 对齐 - 视图 - 超级视图
- 等宽 - 视图 - 乘数设置为 0.9 的超级视图
- 宽高比 - 视图 - 乘数设置为 1:1
的视图
此设置在纵向模式下工作正常,但在横向模式下失败。 (见下图)
我需要什么样的约束才能解决这个问题。如果设备旋转,我是否必须更改约束?
人像模式
横向模式 - 错误
横向模式 - 样机。这是我想要的。
您强制设置了视图宽度和纵横比。因此,当您的宽度增加时,自动布局将迫使您的高度也增加以保持 1:1 纵横比。
你必须:
- 将您的高度和宽度限制设置为
<= 0.9* Superview
,优先级为 1000
- 将您的高度和宽度限制设置为
== 0.9* Superview
,优先级为 750
我没试过,但应该看起来更好 ;)
这里有一个方法:
- 从上面列出的四个约束开始:X 中心、Y 中心、等宽(0.9 乘数)和纵横比,所有这些都具有优先级 1000。
- 将等宽的优先级更改为 750。这将允许自动布局在必要时忽略或修改此约束。
- 添加一个等高(视图 - 超级视图)约束,但不是等于,而是使其小于或等于乘数 0.9。将其优先级保留为 1000。
现在,当您处于纵向时,自动布局将能够像以前一样通过将红色框的宽度设置为 90% 来满足您的所有约束。当您切换到横向时,等高约束将确保红色框不会增长超过高度的 90%,因为此约束具有 1000 优先级,但自动布局也会使框尽可能大以尝试最好服务于等宽约束。
我需要使用单个 UIControl 自动布局故事板 UIView。 UIControl 应该居中,需要具有 1:1 的宽高比,并且应该始终使用 90% 的超级视图宽度或高度,具体取决于设备方向而不进行剪裁。
我添加了 4 个约束条件
- 中心 Y 对齐 - 视图 - 超级视图
- 中心 X 对齐 - 视图 - 超级视图
- 等宽 - 视图 - 乘数设置为 0.9 的超级视图
- 宽高比 - 视图 - 乘数设置为 1:1 的视图
此设置在纵向模式下工作正常,但在横向模式下失败。 (见下图)
我需要什么样的约束才能解决这个问题。如果设备旋转,我是否必须更改约束?
人像模式
横向模式 - 错误
横向模式 - 样机。这是我想要的。
您强制设置了视图宽度和纵横比。因此,当您的宽度增加时,自动布局将迫使您的高度也增加以保持 1:1 纵横比。 你必须:
- 将您的高度和宽度限制设置为
<= 0.9* Superview
,优先级为 1000 - 将您的高度和宽度限制设置为
== 0.9* Superview
,优先级为 750
我没试过,但应该看起来更好 ;)
这里有一个方法:
- 从上面列出的四个约束开始:X 中心、Y 中心、等宽(0.9 乘数)和纵横比,所有这些都具有优先级 1000。
- 将等宽的优先级更改为 750。这将允许自动布局在必要时忽略或修改此约束。
- 添加一个等高(视图 - 超级视图)约束,但不是等于,而是使其小于或等于乘数 0.9。将其优先级保留为 1000。
现在,当您处于纵向时,自动布局将能够像以前一样通过将红色框的宽度设置为 90% 来满足您的所有约束。当您切换到横向时,等高约束将确保红色框不会增长超过高度的 90%,因为此约束具有 1000 优先级,但自动布局也会使框尽可能大以尝试最好服务于等宽约束。