按比例约束 UIView

Posted

技术标签:

【中文标题】按比例约束 UIView【英文标题】:Constrain UIView's proportionally 【发布时间】:2018-04-07 23:09:35 【问题描述】:

我想以相对的方式定位我的观点。我想使用百分比而不是像素。假设我想将按钮的中心定位在其超级视图高度的 25% 处。我该怎么做?

一种方法是:

button.topAnchor.constraint( equalTo: superView.topAnchor, constant: /* compute constant "dynamically") .isActive = true

但这感觉很愚蠢,因为我们在许多 Layout Margin API 函数中都有一个 multiplier 参数。

但是,如果我输入 button.centerYAnchor.constraint,建议的补全都不会显示任何接受 multiplier 参数的函数,除了名称中带有 systemSpacing 的函数。我研究过“系统间距”,但无法弄清楚它的作用。

如果我有这个限制:

button.topAnchor.constraintEqualToSystemSpacingBelow(rootView.topAnchor, multiplier: 0.2).isActive = true

视图正好位于其 superView 顶部的正下方。

【问题讨论】:

【参考方案1】:

我还没有找到使用布局锚点的方法,但这里是如何通过直接创建 NSLayoutConstraint 来做到这一点:

NSLayoutConstraint(item: button, attribute: .centerY,
    relatedBy: .equal, toItem: superView, attribute: .bottom,
    multiplier: 0.25, constant: 0).isActive = true

【讨论】:

以上是关于按比例约束 UIView的主要内容,如果未能解决你的问题,请参考以下文章

空 UIView 上的自动布局约束无法按预期工作

使用比例约束会导致不同屏幕尺寸出现故障

UItextview 没有按预期扩展约束

iOS:使用自动布局保持视图彼此按比例调整大小

如何为具有约束的 UIView 设置动画?

设置两个 UIButton 约束? [关闭]