3
アニメーションがサブビューの層に添加されている場合、いくつかの理由で、CATransitionは、サブビューを追加した直後にアニメーション化しません。サブビューが追加された直後にサブビューのレイヤーに追加されたCATransitionはなぜ機能しませんか?
transitionView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[transitionView setBackgroundColor:[UIColor redColor]];
[[self contentView] addSubview:transitionView];
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setType:@"cube"];
[animation setDuration:1.0];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[animation setSubtype:@"fromRight"];
[[transitionView layer] addAnimation:animation forKey:nil];
しかし、アニメーションは若干の遅延の後に追加された場合:
transitionView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[transitionView setBackgroundColor:[UIColor redColor]];
[[self contentView] addSubview:transitionView];
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setType:@"cube"];
[animation setDuration:1.0];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[animation setSubtype:@"fromRight"];
[self performSelector:@selector(animate) withObject:nil afterDelay:0.00001];
-
- (void)animate
{
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setType:@"cube"];
[animation setDuration:1.0];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[animation setSubtype:@"fromRight"];
[[transitionView layer] addAnimation:animation forKey:nil];
}
予想通り遷移が動作します。これには何らかの理由がありますか?
また、あなたはフラッシュの前に 'clearColor'にあなたの背景色を設定し、後redColor''にそれを変更することもできますフラッシュ。 –