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