【问题标题】:iOS - proportional spacing with autolayoutiOS - 具有自动布局的比例间距
【发布时间】:2015-01-11 00:31:15
【问题描述】:

我正在尝试使用界面生成器创建一个完美的缩放视图。到目前为止,一切都很好。我正在以编程方式缩放字体、按钮等。唯一的问题是元素之间的约束(间距)保持不变。我想避免为间距约束创建出口,因为它看起来很乱。我希望元素之间的间距在拉伸元素时保持成比例。现在一切都基于屏幕的左侧对齐。如果我伸展我的视野,一切都会保持左对齐。我希望它按比例分开。我怎样才能做到这一点(最好使用界面生成器)?

【问题讨论】:

    标签: objective-c xcode swift autolayout constraints


    【解决方案1】:

    虚拟视图???你肯定是在逗我。如果这是 Apple 推荐的 - 那我就不太尊重他们了。

    您显然要寻找的是中心水平(中心 X 对齐)约束,然后您只需要在保持常数为 0 的同时使用乘数:

    乘数从 0 到 2

    1 will place the center of the subview at the center of the superview.
    0 will place the center of the subview at the left edge of the superview.
    2 will place the center of the subview at the right edge of the superview.
    0.5 will place the center of the subview at 25% through the superview.
    1.5 will place the center of the subview at 75% through the superview.
    

    摆脱所有这些水平空间限制。并且始终考虑乘数 - 约束的常数应始终设置为 0。

    Apple 痴迷于原生分辨率 - 他们不希望您的设计在不同的屏幕尺寸上进行缩放。拧他们。一路缩放分辨率。

    【讨论】:

    • 没错,不要这样给固定空间使用比例。
    • 这应该是标记的答案,实现起来很简单。
    【解决方案2】:

    注意 - 这是一种粗略的做法。

    我有一个类似的问题,并通过在我的对象之间添加虚拟视图来表示它们之间的间距来解决它。您可以将虚拟视图限制为与其余视图按比例缩放,这将使对象之间的间距随着整体大小正确缩放。我设置了我的虚拟视图的 hidden 属性,这样它们就不会出现(注意 - 当它们被隐藏时,它们仍然可以正确布局)。

    希望对您有所帮助。

    编辑:

    这种方法是不完美的(你必须用无关的视图把 IB 弄得乱七八糟),但就像@sha 所说的那样,它似乎是完成它的唯一方法。 事实证明,其他人一直在提供类似的建议。我遇到了这些可能有用的参考资料:

    AutoLayout to keep view sizes proportional

    AutoLayout: layout consistency with proportional element spacing with 3.5" and 4" screens

    【讨论】:

    • 据我所知,这是做这种布局的唯一方法
    • 事实上,这是 Apple 建议您这样做的方式。我现在找不到它,但他们的 WWDC 材料中有视频显示他们以这种方式实现它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2021-11-14
    相关资源
    最近更新 更多