Objective C - 用动画隐藏UINavigationController和UITabBarController

tee*_*ink 2 objective-c ios

我正在开发一个应用程序,它底部有一个UITabBarController,屏幕顶部有UINavigationController.

可以通过UITabBarController访问的部分之一是"照片库"部分,我可以在其中全屏查看照片.

我可以使用以下代码隐藏它们而不用动画

self.navigationController.navigationBarHidden = YES;
[self.tabBarController.tabBar setHidden:TRUE];
Run Code Online (Sandbox Code Playgroud)

当我想要全屏查看照片时,如何用一点淡化动画隐藏UINavigationController和UITabBarController?(就像Facebook应用程序在你想要全屏查看照片时隐藏它们一样)

或者,根据代码片段,有没有比我正在做的更好的方法?

谢谢,
Tee

Oct*_*ape 6

只需制作自己的动画.您可以使用以下代码......

对于UINavigationController:

[UINavigationBar beginAnimations:@"NavBarFade" context:nil];
self.navigationController.navigationBar.alpha = 1;
[self.navigationController setNavigationBarHidden:YES animated:NO]; //Animated must be NO!
[UINavigationBar setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UINavigationBar setAnimationDuration:1.5];
self.navigationController.navigationBar.alpha = 0;
[UINavigationBar commitAnimations];
Run Code Online (Sandbox Code Playgroud)

对于UITabBarController:

[UITabBar beginAnimations:@"TabBarFade" context:nil];
self.tabBarController.tabBar.alpha = 1;
[UITabBar setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UITabBar setAnimationDuration:1.5];
self.tabBarController.tabBar.alpha = 0;
[UITabBar commitAnimations];
Run Code Online (Sandbox Code Playgroud)

您还可UIViewAnimationCurve以为不同类型的渐变选择不同的,或通过为setAnimationDuration消息提供不同的输入(以秒为单位的时间)来更改动画的持续时间.

编辑:对于"重新出现"的淡入淡出动画,你只需要反转alpha值,这样就可以从0变为1.如果你想看到这个代码,请给我留言.