5

iPhone Music アプリのカバーフロー画面に表示されるアニメーションを実装するにはどうすればよいですか? 小さなビューをクリックすると、反転して別のビューに拡大されますか? これどうやってするの?コア アニメーションを使用してビューを反転およびスケーリングできますが、別のビューへの移行を行うにはどうすればよいですか? ありがとう

4

2 に答える 2

14

UIView2 つの s (フロントサイド/バックサイド) の as Containerが必要であり、UIViewその間にアニメーションを実行しながら、これらをサブビューとしてコンテナーから削除/追加します。

UIView *flipContainer;
UIView *frontSide;
UIView *backSide;
  //...
-(void)turnUp
{
  [backSide removeFromSuperview];
  [UIView beginAnimations:nil context:NULL];
  [UIView setAnimationDuration:1.0];
  [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:flipContainer cache:YES];
  [UIView setAnimationDuration:1.0];
  CGAffineTransform transform = CGAffineTransformMakeScale(1.2, 1.2);
  flipContainer.transform = transform;
  [UIView commitAnimations];
  [flipContainer addSubview:frontSide];
}
-(void)turnDown
{
  [frontSide removeFromSuperview];
  [UIView beginAnimations:nil context:NULL];
  [UIView setAnimationDuration:1.0];
  [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:flipContainer cache:YES];
  [UIView setAnimationDuration:1.0];
  CGAffineTransform transform = CGAffineTransformMakeScale(1, 1);
  flipContainer.transform = transform;
  [UIView commitAnimations];
  [flipContainer addSubview:backSide];
}
于 2009-11-18T12:20:05.347 に答える
0

私はあなたがやっている正確なコードを試しています - ズーム効果は得られますが、ターンオーバーはありません。唯一の違いは、turnUp コードの直前に、flipContainer を追加して (背面を表示して)、ひっくり返せるようにすることです。

// construct animation container
self.flipContainer = [[FlipContainer alloc] init];
[self.flipContainer.view setFrame:CGRectMake(clickedSquareX, clickedSquareY, 200, 200)];
[self.flipContainer.view addSubview:self.backside.view];
// add animation container
[self.myParentView.view addSubview:self.flipContainer.view];
// PROCEED to your turnUp code

私がこれを行っている理由は、水平 UIScrollView に大量の画像があるため、200x200 の画像を反転させて詳細を表示するためにズームすることを「シミュレート」するために、flipContainer を追加して、正確な場所の上に正確な画像を表示する裏側を追加します。押した画像。それはうまくいくはずですよね?私を少し混乱させるのは、あなたが行うターンアップコードの最初の行です:

[backSide removeFromSuperview];

..追加したばかりのビューが削除されます。

これがこの質問を入れるのに適切な場所かどうかはわかりません - そうでない場合は申し訳ありません!

于 2010-07-13T08:12:10.337 に答える