如何在Xcode的Interface Builder中使用约束/自动布局来正确缩放图像和字体?

时间:2017-05-17 09:54:23

标签: ios xcode autolayout interface-builder ios-autolayout

我试图在Xcode的Interface Builder中创建用户界面,以便:

  1. 根据设备更改宽度(宽高比缩放)
  2. 缩放视图
  3. 图像按纵横比(无拉伸或压扁图像)缩放
  4. 字体按比例线性缩放
  5. 如果某个设计中的某些东西水平居中,则它应该在所有设计中居中
  6. 简单的目标,我认为......我之前已经使用自定义代码以编程方式完成了所有这些,但我宁愿以正确的方式实现这一目标"并在Interface Builder中正确设计并让它为我处理所有布局。

    让我们说我在Interface Builder中为这样的小型iPhone设计了一个屏幕:

    original layout

    现在说这个外观和感觉我对iPhone 4s设备感到满意,并且只想按比例扩大所有尺寸,以适应更新,更大的iPhone外形。

    如果我要使用旧的"弹簧和支柱"方法,这个几乎给了我想要的更大的外形尺寸...除了一切都在高度方面伸展(不仅仅是基于原始设计的宽高比和宽度与高度。)您可以注意到"徽标图像"被拉得太高了。并且字体也不会在标签或按钮上放大。

    scaled without changes

    我也尝试过使用"约束",特别是按比例解决图像缩放的问题,基于容器的纵横比,并且没有任何运气。

    在这里,我将弹簧和支柱重置为默认值,并为原始设计的徽标图像添加约束:

    original logo with aspect ratio constraint

    考虑到更大的外形,实际上没有任何改变:

    larger form factor with aspect ratio

    (是的,尽管报告了布局错误,"修复"它们对图像的缩放/缩放没有任何净影响。)

    所以只是重述 - 我如何使用Xcode / Interface Builder约束来执行以下操作?

    1. 根据设备更改宽度(宽高比缩放)
    2. 缩放视图
    3. 图像按纵横比(无拉伸或压扁图像)缩放
    4. 字体按比例线性缩放
    5. 如果某个设计中的某些东西水平居中,则它应该在所有设计中居中
    6. 提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 根据设备更改宽度(宽高比缩放)
  2. 缩放视图
  3. 图像按纵横比(无拉伸或压扁图像)缩放
  4. 您可以做的是使用宽高比制作宽度和高度。

    我为superview添加了一个乘数方面

    enter image description here

    enter image description here

    enter image description here

    1. 字体按比例线性缩放
    2. 我已经设置了这样的标签。

      enter image description here

      从属性检查器我设置如下:

      enter image description here

      1. 如果某个设计中的某些东西水平居中,则它应该在所有设计中居中
      2. 所有视图都居中对齐。

        enter image description here