0

私のアプリには、IB で作成した 2 つのトップレベルの UIView があります。1 つは UIViewControllers ビューで、UIScrollView であるサブビューがあります。もう 1 つの最上位レベルの UIView は、UIScrollView に入るコンテンツです。その部分は正常に動作し、UIScrollView の contentsize を他の UIView のサイズに設定すると、ポートレート モードですべてが完全に動作します。ただし、横向きモードに切り替えると、UIScrollView のサイズは適切に変更されますが、そのサブビューは左上隅にとどまりますが、水平方向の中央に配置したいと考えています。だから私はこの制約を作成し、それを UIScrollView に追加しました:

  NSLayoutConstraint* iPhoneTextFieldContainerAlwaysInHorizontalCenter = [NSLayoutConstraint
                                                                                constraintWithItem:self.iPhoneTextFieldContainerView
                                                                                attribute:NSLayoutAttributeCenterX
                                                                                relatedBy:NSLayoutRelationEqual
                                                                                toItem:self.iPhoneMainScrollView
                                                                                attribute:NSLayoutAttributeCenterX
                                                                                multiplier:1.0
                                                                            constant:0];

ただし、ランドスケープモードに切り替えると、次の制約例外が発生します:

( NSAutoresizingMaskLayoutConstraint:0x76dacb0 h=-&- v=-&- UIView:0x76d6eb0.width == UIViewControllerWrapperView:0x76d5b10.width, NSAutoresizingMaskLayoutConstraint:0x76d7e70 h=--& v=--& UIView:0x76d3110.midX == + 160, NSLayoutConstraint:0x76d7030 UIScrollView:0x7680f10.trailing == UIView:0x76d6eb0.trailing, NSLayoutConstraint:0x76d6ff0 H:|-(0)-[UIScrollView:0x7680f10]

(名前: '|':UIView:0x76d6eb0)、NSLayoutConstraint:0x76d7330 UIView:0x76d3110.centerX == UIScrollView:0x7680f10.centerX、NSAutoresizingMaskLayoutConstraint:0x76deb70 h=-&- v=-&- UIViewControllerWrapperView:0x76d5b10.widthViewTransition == UIN 0x76d1ab0.width, NSAutoresizingMaskLayoutConstraint:0x75a3b60 h=--- v=--- V:[UIWindow:0x91979a0(480)], NSAutoresizingMaskLayoutConstraint:0x7595510 h=-&- v=-&- UILayoutContainerView:0x76a5da0.height == UIWindow: 0x91979a0.height、NSAutoresizingMaskLayoutConstraint:0x759e020 h=-&- v=-&- UINavigationTransitionView:0x76d1ab0.width == UILayoutContainerView:0x76a5da0.width )

制約を破って回復を試みます NSLayoutConstraint:0x76d7330 UIView:0x76d3110.centerX == UIScrollView:0x7680f10.centerX

ここで私が間違っていることを教えてもらえますか? 制約を削除する必要がありますか? 私はそのようなことをすることができますか?

よろしくお願いします!

心から、

ゾリ

4

1 に答える 1

1

カスタム制約と自動サイズ変更マスクの制約が衝突しているようです。この行を使用して、それが生成されないようにし、必要に応じて制約を追加します。

self.iPhoneMainScrollView.translatesAutoresizingMaskIntoConstraints = NO;
于 2013-01-29T15:23:35.663 に答える