NSLayoutConstraint 将 centerX 约束到 superview 的另一侧

Posted

技术标签:

【中文标题】NSLayoutConstraint 将 centerX 约束到 superview 的另一侧【英文标题】:NSLayoutConstraint constrain centreX to another side of superview 【发布时间】:2014-08-30 03:54:34 【问题描述】:

我目前可以将视图的 centerX 限制在其父视图的左侧,如下所示:

NSLayoutConstraint *con = [NSLayoutConstraint constraintWithItem:view
                                                       attribute:NSLayoutAttributeCentreX
                                                       relatedBy:NSLayoutRelationEqual
                                                          toItem:view.superview
                                                       attribute:NSLayoutAttributeLeft
                                                      multiplier:1
                                                        constant:20];

但这不允许我设置约束的优先级,因此非常严格。

我的问题是:你如何使用视觉格式语言实现类似的东西(这样优先级也可以设置)?

另请注意:我希望仅通过单个约束来实现这一点,以便以后使用。

【问题讨论】:

【参考方案1】:

刚刚回忆起调用[con setPriority:priority] 的问题仅在约束已安装在视图中时发生。

出于我的目的,使用 constraintWithItem:Attribute:RelatedBy... 然后调用 con.priority=priority 可以正常工作。

尽管如此,了解如何使用 VFL 实现类似的功能仍然很有用(如果可能的话)

【讨论】:

以上是关于NSLayoutConstraint 将 centerX 约束到 superview 的另一侧的主要内容,如果未能解决你的问题,请参考以下文章

NSLayoutConstraint 将 centerX 约束到 superview 的另一侧

NSLayoutConstraint - 无法将子视图框架设置为父视图边界

NSLayoutConstraint 将视图固定到父视图的底部边缘

使用 NSLayoutConstraint 将大型 UIView 居中

将实例变量与 NSLayoutConstraint 的视觉格式一起使用是不是有最佳实践?

NSLayoutConstraint 等高不等分