UIDynamicBehavior
を私のビューに追加すると、デバイスを回転させたときに完全に分割されます。ここでは、それは肖像画にあるものだ(正しく表示さ):UID力学とデバイスローテーション
そして、ここでは、それは風景の中にある、すべてが壊れた:
を私は呼び出しを削除した場合ので、それが自動レイアウトの問題だとは思いませんUIDynamicBehavior
を追加すると、自動レイアウトの問題がなくても正常に動作します。自動レイアウトエラーもまったく投げられません。ここでは、コードです:
@interface SWViewController() {
UICollisionBehavior *coll;
UIDynamicAnimator *dynamicAnimator;
}
@implementation SWViewController
- (void)viewDidLoad {
[super viewDidLoad];
dynamicAnimator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self setupCollisions]; // commenting this out fixes the layout
}
- (void)setupCollisions {
NSArray *dynamicViews = @[greenView];
coll = [[UICollisionBehavior alloc] initWithItems:dynamicViews];
CGFloat topBound = CGRectGetMinY(greenView.frame);
[coll addBoundaryWithIdentifier:@"top"
fromPoint:CGPointMake(0, h1)
toPoint:CGPointMake(CGRectGetWidth(greenView.frame), h1)];
[dynamicAnimator addBehavior:coll];
}
私はdidRotateFromInterfaceOrientation
をオーバーライドする場合、私はgreenView
の上部境界は、それが(再び、setupCollisions
修正これへの呼び出しを削除する)必要があります言う自動レイアウトに従っていないことがわかります。 greenView
上
自動レイアウトの境界は、以下のとおりです。私が見つけ
height = 200
trailing space to Superview = 0
leading space to Superview = 0
bottom space to Superview = 0
こんにちは、私はあなたがここに衝突挙動を使用していることがわかります。これは重力行動なしで何をするのですか?ありがとう。 – Unheilig
この例では、Gravity Behaviorを使用していません。私がそれを切り出すと、同じことが起こります。 – swilliams
件名のWWDCビデオを視聴することを強くお勧めします。今年のセッション206と221。 https://developer.apple.com/wwdc/videos/あなたが持っている場合は、あなた自身の質問を作成してください。 – swilliams