前回のコードでは手前にフェードアウトした直後に原寸大が一瞬表示され、その後消えた。
表示を消す処理は、アニメーション終了時にベースのレイヤーを 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