我的NSLayoutConstraint出现了一个奇怪的问题。
我最近将iPhone更新为8.3并使用最新的Xcode。
该应用程序在iOS 8.3上崩溃,断点指向我:
self.triangleTopConstraint = [NSLayoutConstraint constraintWithItem:self.triangle
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:0.0];
[self addConstraint:self.triangleTopConstraint];
这在iOS 8.3之前有效。
但是,我在这里阅读:
当关系没有第二个视图时,它表示使用NSLayoutAttributeNotAnAttribute
。所以我改成了这个:
self.triangleTopConstraint = [NSLayoutConstraint constraintWithItem:self.triangle
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:0.0];
[self addConstraint:self.triangleTopConstraint];
但该应用程序仍然在iOS 8.3上崩溃。
我错过了什么吗?
答案 0 :(得分:4)
您可以设置绝对高度或宽度值,在这种情况下,您将使用toItem
nil
和attribute
NSLayoutAttributeNotAnAttribute
;但你不能设置绝对顶部。您必须将顶部的设置为其他内容 - 例如,相对于超级视图的顶部(它不会 成为顶部的superview,这只是一个特别常见的事情,我以它为例。