ios 8.3 NSLayoutAttributeNotAnAttribute 崩溃
ios 8.3 NSLayoutAttributeNotAnAttribute crash
我的 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 上仍然崩溃。
我是不是漏掉了什么?
您可以设置绝对高度或宽度值,在这种情况下,您将使用 nil
的 toItem
和 NSLayoutAttributeNotAnAttribute
的第二个 attribute
;但是你不能设置绝对顶部。您必须将顶部 设置为 其他东西 — 例如,相对于超级视图的顶部(它 没有 超级视图的顶部,这是一个特别常见的事情,所以我用它作为例子)。
我的 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 上仍然崩溃。
我是不是漏掉了什么?
您可以设置绝对高度或宽度值,在这种情况下,您将使用 nil
的 toItem
和 NSLayoutAttributeNotAnAttribute
的第二个 attribute
;但是你不能设置绝对顶部。您必须将顶部 设置为 其他东西 — 例如,相对于超级视图的顶部(它 没有 超级视图的顶部,这是一个特别常见的事情,所以我用它作为例子)。