UIDynamics を使用しているビュー内の位置にビューをアニメーション化しようとしています。Core Animation アニメーションと UIDynamics の間の相互作用についてはよくわかりませんが、理解できないことが起こっています。
ビューの中央下部から始まる単一のビュー、ラベルを持つビューコントローラーを使用したテストプロジェクトがあり、モーションを上部中央にアニメーション化しようとしています。
// Create the label
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(160, 400, 100, 50)];
label.text = @"hello";
[self.view addSubview:label];
// Set up the animator and collision
self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
UICollisionBehavior *collisionBehaviour = [[UICollisionBehavior alloc] initWithItems:@[ label ]];
[collisionBehaviour addBoundaryWithIdentifier:@"wall"
fromPoint:CGPointMake(0, 50)
toPoint:CGPointMake(320, 50)];
[self.animator addBehavior:collisionBehaviour];
// Animate the label
[UIView animateWithDuration:1.0
animations:^{
label.frame = CGRectMake(160, 100, 320, 100);
}];
これは、ビューの上部にある単純な境界線であり、アニメーションの開始位置または終了位置の近くにはありません。ボタンのアニメーションを初期位置に変更する必要がある理由はわかりませんが、そうです。
addBehaviour: 呼び出しをコメントアウトすると、アニメーションは正常に機能します。しかし、動作を追加すると、アニメーションが間違った場所に移動します。理由がわかりません。