3

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 より前に機能していました。

しかし、私はこのページを読んだ:

https://developer.apple.com/library/ios/documentation/AppKit/Reference/NSLayoutConstraint_Class/#//apple_ref/c/tdef/NSLayoutAttribute

関係に 2 番目のビューがない場合に使用するように指示され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 でクラッシュしています。

何か不足していますか?

4

1 に答える 1

4

絶対的な高さまたは幅の値を設定できます。その場合、toItemofnilと秒attributeの ofを使用しNSLayoutAttributeNotAnAttributeます。ただし、絶対上限を設定することはできません。たとえば、スーパービューの上部に関連して上部を設定する必要があります(スーパービューの上部である必要はありませ。これは特に一般的なことなので、私はそれを使用しています例として)。

于 2015-04-15T04:50:10.833 に答える