2011年3月1日火曜日

transformの合成、アニメーション基本(ちょっと修正

だいたいこんな感じ。Viewのtransformは常に上書きされる。
90度回転をtransformに設定した後、拡大を設定すると
90度回転はなかったことになってるので注意。
回転した状態で拡大する場合はCGAffineTransformConcatで
transformを合成して設定する必要がある。
ちなみに
animeView.transform = CGAffineTransformIdentity;
で初期状態にもどる

*3/1修正 回転も拡大縮小も中心起点だった;
      アフィン変換いまいちわかってないなー。
-(void)startAnime:(UIView*)animeView{
 //開始前に縮小しておく
 animeView.transform = CGAffineTransformMakeScale(0.1, 0.1);
 //アニメーション設定開始
 [UIView beginAnimations:nil context:NULL];
 //アニメーションの秒数
 [UIView setAnimationDuration:0.3];
 //動きの設定
 [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
 //delegate設定(endAnimeがいらないならnilでOK)
 [UIView setAnimationDelegate:self];
 //アニメーション終了後にやりたい処理
 [UIView setAnimationDidStopSelector:@selector(endAnime)];

 //90度回転しながら元の大きさに拡大
 CGAffineTransform transform1,transform2;
 transform1 = CGAffineTransformMakeRotation(M_PI * 90 / 180.0f);
 /*
 //ちなみに移動はこれ 
 transform1 = CGAffineTransformTranslate(transform1, 128, 128);
 */
 //拡大
 transform2=CGAffineTransformMakeScale(1.0, 1.0);
 //transformの合成
 CGAffineTransform concat = 
  CGAffineTransformConcat(transform1, transform2);
 //transformの適用
 [animeView setTransform:concat];
 //アニメーション設定終了
 [UIView commitAnimations];
}

-(void)endAnime{
 //アニメーション終了後にやりたい処理を書く
}