Hatena::Groupiphone-dev

3ヶ月でiPhoneアプリを1本作る日記 RSSフィード

参考になった記事があれば☆をぽちっとしていただけると

2009-12-20

[][]レイヤーを使ったアニメーション 11:46 はてなブックマーク - レイヤーを使ったアニメーション - 3ヶ月でiPhoneアプリを1本作る日記

アニメーションの処理方法は3種類あるで書いた2つめの方法。

レイヤーを使った方法だとこんな感じ。

UIImage* image=[UIImage imageNamed:@"image.png"];
//レイヤーの生成
CALayer* layer=[CALayer layer];
[layer setBounds:CGRectMake(0,0,image.size.width,image.size.height)];
[layer setPosition:CGPointMake(60,60)];
[layer setContents:(UIView*)image.CGImage];
[self.view.layer addSublayer:layer];

//レイヤーアニメーションの生成
CABasicAnimation* anime=[CABasicAnimation animationWithKeyPath:@"position"];
anime.duration = 1.0f;
anime.autoreverses = YES;
anime.repeatCount = 999;
CGPoint position = layer.position;
anime.fromValue = [NSValue valueWithCGPoint:position];
position.x += 200;
anime.toValue = [NSValue valueWithCGPoint:position];
[layer addAnimation:anime forKey:@"anime"];

アニメーションを停止するには、removeAnimationForKey メソッドを使う。

[layer removeAnimationForKey:@"anime"];

[]layerの重なり順を設定する 00:09 はてなブックマーク - layerの重なり順を設定する - 3ヶ月でiPhoneアプリを1本作る日記

addSublayer だと、一番前面に表示されるようになる。

例えばUIコントロールがあってその背面に表示させたい場合などは、insertSublayer を使ってindexを指定すると良い。

[self.view.layer insertSublayer:layer atIndex:0];

2009-12-18

[][]アニメーションの処理方法は3種類ある 10:07 はてなブックマーク - アニメーションの処理方法は3種類ある - 3ヶ月でiPhoneアプリを1本作る日記

  1. UIViewで表示しているものを直接動かすもの
  2. Core Animationを使い「レイヤ」を処理するもの
  3. トランジション」を用いるもの

簡単さ手軽さの順で言えば、3>1>2かな。本格的にやるなら2。


アニメーションの処理については、オライリー本にはあまり書かれていなくて、「iPhone SDK プログラミング大全」の書籍にけっこう書かれていました。