Core Animation - 画面手前からフェードイン / 手前へフェードアウト [2]手直し

2010年11月4日木曜日 | Published in | 0 コメント

このエントリーをはてなブックマークに追加

[前回] Cocoaの日々: Core Animation - 画面手前からフェードイン / 手前へフェードアウト

前回のコードでは手前にフェードアウトした直後に原寸大が一瞬表示され、その後消えた。

表示を消す処理は、アニメーション終了時にベースのレイヤーを hidden=YES としていた。
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
 if (!fadeIn) {
  CALayer* baseLayer = [self.view.layer.sublayers objectAtIndex:1];
  baseLayer.hidden = YES;
 }
}

今回新たに baseView::UIView を用意し、そこへベースレイヤーを載せ、そして表示を消す時にこのビューを hidden=YES とするようにしてみた。
@interface CoreAnimation3DSample2ViewController : UIViewController {

 BOOL fadeIn;
 UIView* baseView;
}

- (IBAction)fadeOut:(id)sender;
@property (nonatomic, retain) IBOutlet  UIView* baseView;

@end

- (void)viewDidLoad {
  [super viewDidLoad];
  :
 CALayer* baseLayer = [CALayer layer];
 [self.baseView.layer addSublayer:baseLayer];
  :
}
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
 if (!fadeIn) {
  self.baseView.hidden = YES;
 }
}

するとフェードアウト後の一瞬表示はなくなり真っ黒となった。


シミュレータではうまくいったように見える。
そこで実機で試してみる。

結果は NG

うーむ。
今回は未解決。


ソースコード
CoreAnimation3DSample2 at 2010-11-04 from xcatsan's iOS-Sample-Code - GitHub

Responses

Leave a Response

人気の投稿(過去 30日間)