如何通过xcode对边距约束应用乘数?
Posted
技术标签:
【中文标题】如何通过xcode对边距约束应用乘数?【英文标题】:How to apply multiplier on margin constraint through xcodee? 【发布时间】:2019-06-23 18:48:36 【问题描述】:约束
布局层次
橙色卡片上边距
说明
我希望橙色框的一半(滚动视图内)始终位于green color
图像的顶部。所以我在top constraint
的orange box
上应用了乘数属性
考虑iPhone 4
460/123 = 滚动视图高度 (460) / (167 - 44)(橙色框高度 - iphone 4 中框的上边距)
我想在橙色框的上边距为其超级视图(即scrollView
)提供乘数,以便在不同屏幕中以相同的比例动态调整。
我所取得的成就是:
我在这里做错了什么以及如何通过 xcode 处理布局?
它不是动态的。我怎样才能实现这种布局?或者如何通过xcode在垂直约束上添加乘数?
【问题讨论】:
你的绿色视图不尊重安全区域,你应该决定橙色视图是否也应该发生这种情况 【参考方案1】:NSLayoutConstraint
的multiplier
是一个只能获取 属性。因此,每次您想要使用不同的乘数时都必须创建一个新实例并停用旧约束,然后如果要调整乘数则激活新约束。
我建议改为调整约束的constant
,这样你就不需要创建新的约束实例了。
@IBOutlet weak var topMarginConstraint: NSLayoutConstraint!
override public func viewDidLoad()
if iphone4
topMarginConstraint.constant = scrollView.frame.height / (orangeBoxView.height - iphone4TopMargin)
else if iphonex
topMarginConstraint.constant = scrollView.frame.height / (orangeBoxView.height - iphonexTopMargin)
else
// Implementations for other phones / screens...
view.setNeedsLayout()
【讨论】:
你确定除了给所有设备高度之外别无他法吗?自动布局不能根据百分比来处理约束的大小?以上是关于如何通过xcode对边距约束应用乘数?的主要内容,如果未能解决你的问题,请参考以下文章