【问题标题】:What is the multiplier in Interface Builder for?Interface Builder 中的乘数是干什么用的?
【发布时间】:2015-01-17 22:29:14
【问题描述】:

作为自动布局中约束属性的乘数有什么作用?

【问题讨论】:

    标签: interface-builder autolayout size-classes


    【解决方案1】:

    约束中两个值之间的关系由一个公式确定:

     b = am + c
    

    其中ab 是要关联的两个值,m 是乘数,c 是常数。

    因此,例如,如果一个宽度是另一个宽度的两倍,那么显然乘以 2 是有意义的(以及常数 0)。但是,如果一个宽度比另一个多 10,那么常量 10 将是有意义的(以及 1 的乘数)。

    很明显,默认的乘数是1,常数是0。这使得ab 相等。

    专家补充:在幕后,这个公式结构的部分原因是你最终得到了一组联立线性方程来求解。这就是解决各种约束以获得实际布局的方式。

    【讨论】:

    • 再次感谢 Matt 的精彩回答。 “但如果一个宽度比另一个多 10”,这在 iPhone 4" 视图和 iPhone 5.5" 视图之间是否有效?他们有相同的尺码等级,但看起来可能不同。谢谢!
    • 它绝对适用于任何地方;这才是重点。但请记住,其他事情可能会改变其中一个值。约束通常与最终的超级视图(视图控制器的主视图)相关联。但是 it 在每种设备类型上都有不同的尺寸!这就是自动布局的重点;这个视图改变大小,所以我们设置约束,以便其他东西可以随之移动/改变。
    【解决方案2】:

    根据Apple's docs:“常量乘以约束右侧的属性,作为获取修改后属性的一部分。”

    它很有用,例如,如果您希望一个视图的高度是另一个视图高度的 35%。在这种情况下,您将创建一个约束,使其高度等于乘数 0.35

    【讨论】:

      猜你喜欢
      • 2018-09-21
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2014-12-05
      • 2011-03-20
      • 2018-02-07
      • 1970-01-01
      • 2011-04-15
      相关资源
      最近更新 更多