1

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: 呼び出しをコメントアウトすると、アニメーションは正常に機能します。しかし、動作を追加すると、アニメーションが間違った場所に移動します。理由がわかりません。

4

3 に答える 3