我需要让状态栏在用户点击屏幕时淡出,我想知道这是否可以使用 Core Animation。我将状态栏设置为:
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent animated: YES];
当我使用 UIView 动画时,我将 [[UIApplication sharedApplication] setStatusBarHidden:NO];
放在 UIView animateWithDuration
block 中,它使其溶解。但是,当我使用核心动画时,它不起作用:
[CATransaction begin];
CABasicAnimation *fader = [CABasicAnimation animationWithKeyPath:@"opacity"];
[fader setDuration:2.0];
[fader setFromValue:[NSNumber numberWithFloat:.75]];
[fader setToValue:[NSNumber numberWithFloat:0]];
[[[[self tabBarController] tabBar]layer]addAnimation: fader forKey:@"BigFade"];
CABasicAnimation *fader2 = [CABasicAnimation animationWithKeyPath:@"opacity"];
[fader2 setDuration:2.0];
[fader2 setFromValue:[NSNumber numberWithFloat:1]];
[fader2 setToValue:[NSNumber numberWithFloat:0]];
[[[[self navigationController] navigationBar]layer]addAnimation: fader2 forKey:@"BigFade2"];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[CATransaction commit];
关于如何在 Core Animation 中完成此操作的任何想法(我需要使用 Core Animation 而不是 UIView 动画)?
最佳答案
您解释说您不想使用 UIViewAnimation,但没有说明原因。你想要自定义淡入淡出动画吗?向我们提供有关您的动机的更多详细信息。在您的情况下使用 - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation
有什么问题?您可以为第二个参数传递常量 UIStatusBarAnimationFade
以获得淡入淡出效果。
如果您想要以不同的方式进行操作,您将面临的问题是没有官方的方式来访问状态栏 View 。
文档中没有任何内容说 statusBar
是 navigationBar
的一部分。因此,您的代码 [[self navigationController] navigationBar]layer] ...
不会达到您希望的效果。
关于iphone - 可以使用 Core Animation 使状态栏消失/溶解吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650456/