iphone - 可以使用 Core Animation 使状态栏消失/溶解吗?

标签 iphone objective-c ios cocoa-touch core-animation

我需要让状态栏在用户点击屏幕时淡出,我想知道这是否可以使用 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 。

文档中没有任何内容说 statusBarnavigationBar 的一部分。因此,您的代码 [[self navigationController] navigationBar]layer] ... 不会达到您希望的效果。

关于iphone - 可以使用 Core Animation 使状态栏消失/溶解吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650456/

相关文章:

iphone - 数据可用后重绘 UITableViewCell 的有效方法

iphone - 终止应用程序后核心数据中的重复实体

ios - 在 Swift 中记录 CLLocationPoints 时不准确

ios - 找不到用于 react-native-vector-icons 的 RCTfont+FA5.h 文件

ios - 该方法在玩纸牌游戏之前有效 n 次,之后第一次失败

iphone - 如何在本地保存对象?

ios - -[__NSDictionaryI rangeOfString :options:]: unrecognized selector sent to instance

ios - 从 nsarray 中删除一个对象将删除所有对象

ios - 为什么全屏时距离侧面距离的自动约束必须为负数?

iphone - 无法从委托(delegate)调用 Controller 方法