如何使照片应用程序中的状态,选项卡和导航栏动画

时间:2011-12-27 14:20:51

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

我正在制作一款使用全屏显示图片的应用。也像照片应用程序,我试图让导航栏,状态栏和标签栏在一定时间后或用户点击屏幕后淡出。我用UIView动画方法(即animateWithDuration)搞砸了一下,但意识到我需要使用Core Animation来完成我想做的事。

到目前为止,我正在搞乱核心动画,并遇到了一些我不确定如何解决的问题:

a)是否可以在动画开始之前延迟动画(不使用单独的线程)。

b)如何使用Core Animation使状态栏具有动画效果,因为我们无权访问状态栏视图/图层?

c)我应该如何停止动画,即如果用户在条形淡出时点击屏幕?我应该在猫交易中将它们组合在一起吗?

只关心人们在尝试完成这项任务时会采取什么方法。到目前为止,这就是我的全部内容:

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"];

2 个答案:

答案 0 :(得分:3)

这里的代码几乎是照片应用程序中许多功能的复制品,在其中您可以看到如何使您的视图透明化并让它们在一定时间/用户点击后消失屏幕。 https://github.com/kirbyt/KTPhotoBrowser

答案 1 :(得分:1)

为什么不使用

- (void)setToolbarHidden:(BOOL)hidden animated:(BOOL)animated 
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation
- (void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated

有延迟吗?