如何重写视觉格式

addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|-[label]-|", options: .AlignAllBaseline, metrics: nil, views: ["label": label]))
addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[label]-|", options: .AlignAllCenterX, metrics: nil, views: ["label": label]))

通过转到布局指南(有边距)?

我尝试过
label.topAnchor.constraintEqualToAnchor(layoutMarginsGuide.topAnchor).active = true
label.leftAnchor.constraintEqualToAnchor(layoutMarginsGuide.leftAnchor).active = true
label.bottomAnchor.constraintEqualToAnchor(layoutMarginsGuide.bottomAnchor).active = true
label.rightAnchor.constraintEqualToAnchor(layoutMarginsGuide.rightAnchor).active = true

但不起作用。甚至layoutMarginsGuide.layoutFrame也没有期望值(是的,我在执行layoutSubviews后在super中称它为)。设置了约束,但操作的余量为零。仅当布局边距设置为负时,它才会进行布局并给出期望的layoutFrame;这显然不是我想要的,但是它表明约束是由边距指南设置的。好像我错过了什么...

最佳答案

在我看来,layoutMarginsGuide在UIView的init方法中尚未准备好。我也遇到了类似的问题,在updateConstraints中设置约束就可以了。仍在调查原因。

更新:我试图做的是在将 View 添加到 super View 之前(在init中)设置layoutMargins。那没用。相对于layoutMarginsGuide,所做的工作是在init中设置约束,但实际上是在viewDidMoveToSuperView中设置layoutMargins。

关于ios - 自动布局: layoutMarginsGuide,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32694124/

10-09 10:09