【发布时间】:2015-05-05 18:26:15
【问题描述】:
每当我通过+constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant: 创建NSLayoutConstraint 时,我似乎总是以错误的顺序放置项目,然后我不得不将它们颠倒过来。这太烦人了,在实际运行代码之前,我似乎无法弄清楚它会如何运行。例如,我希望这段代码将view 定位在self.view 前沿的右侧16 个点,这对我来说是直观的,因为参数的顺序是:
NSLayoutConstraint *leadingMarginConstraint = [NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:view
attribute:NSLayoutAttributeLeading
multiplier:1
constant:16];
但是,情况正好相反。 view 的前沿距离self.view 的前沿左侧 16 个点。与此相同:
NSLayoutConstraint *verticalSpacingConstraint = [NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:view2
attribute:NSLayoutAttributeTop
multiplier:1
constant:16];
我预计view2 的顶部比view1 的底部低 16 个点,但情况正好相反。 view2 的顶部比 view1 的底部高 16 点。
谁能向我解释这是如何工作的?参数顺序的意义是什么?
谢谢!
【问题讨论】:
标签: ios uikit autolayout nslayoutconstraint