2012-10-14 82 views
1

我希望在我的iPhone应用程序中有一个“全屏模式”,当用户按下按钮时,状态栏,导航栏和工具栏会在屏幕之外动画(比如iOS 6横向模式下Safari的全屏功能)。我基本上显示一个UINavigationController与UIViewController作为顶级视图控制器。同时隐藏/显示导航栏,工具栏和状态栏

我可以通过从UIViewController中做这个隐藏的元素:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 

    [self.navigationController setToolbarHidden:YES animated:YES]; 

    [self.navigationController setNavigationBarHidden:YES animated:YES]; 

然而,动画不同步,并且内容的大小调整是不完全的流体。如果您使用Safari全屏功能进行游戏,您可以看到动画完美流畅。关于如何用完美动画实现这一点的任何想法?

+0

类似.. http://stackoverflow.com/questions/21929220/show-hide-uitoolbar-match-finger-movement-precisely-as-in-for-example-ios7-s – Fattie

回答

0

你可以做到以下几点:

[UIView animateWithDuration:0.4 animations:^() { 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    [self.navigationController setToolbarHidden:YES animated:NO]; 
    [self.navigationController setNavigationBarHidden:YES animated:NO]; 
    self.yourView.frame = CGRectMake(0, 0, 320, 480); // If you have several views, set all their frames to 'fullscreen' 
}]; 

您可以通过使用该方法UIView animateWithDuration:(delay: options: animations:^(void)animations completion:^(BOOL finished)completion使用自定义动画,只是检查出UIViewAnimationOptions

+1

感谢您的回应,但该解决方案并不完全符合我的要求。虽然它有助于将状态栏动画时间与其他2进行同步,但它并不能让事情像我想的那样流畅。这很难描述这个问题,因为它是关于动画的,如果我绝望了,我会开始发布我的动画和这个解决方案的视频。 – spybart

+0

我也尝试过这种方式,不幸的是事情发生变化的速度并不太匹配。 – Rick