使用hidesBottomBarWhenPushed在app内置定位< = iOS 6时,iOS 7上的奇怪动画

时间:2013-09-18 22:02:54

标签: objective-c animation ios6 ios7 uikit

当我构建面向iOS 5或6的应用程序,但在iOS 7上运行它时会出现此问题。如果我在navigationController中有一个控制器,它是tabBarController的一部分,我会执行以下操作:

controller.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:testController animated:YES];

发生奇怪的垂直定位动画。我希望新控制器(底部栏隐藏)可以推动或弹出导航控制器,将标签栏推出或将其拉回并且没有垂直定位更改。

问题视频:http://cl.ly/1w0g3j293m03

打开雷达报告:http://www.openradar.me/14670329

6 个答案:

答案 0 :(得分:1)

您始终可以使用

从UIView中删除动画
[self.view.layer removeAllAnimations];

干杯

答案 1 :(得分:0)

试试这个:

[self.navigationController.navigationBar setHidden:NO];

答案 2 :(得分:0)

如果您想保持透明度,请将其添加到根UIViewController

- (void)viewWillAppear:(BOOL)animated {
    [UIView animateWithDuration:0.35f animations:^{
        self.tabBarController.tabBar.alpha = 1.0f;
    }];
}

- (void)viewWillDisappear:(BOOL)animated {
    [UIView animateWithDuration:0.35f animations:^{
        self.tabBarController.tabBar.alpha = 0.0f;
    }];
}

通过这种方式,您可以获得标签栏的漂亮淡入/淡出动画。

答案 3 :(得分:-1)

试试这个

if( [self respondsToSelector:@selector(setEdgesForExtendedLayout:)] )
{
    self.edgesForExtendedLayout=UIRectEdgeNone;
}

答案 4 :(得分:-1)

这说你应该把:

self.navigationController.navigationBar.translucent = NO;

关注此link

答案 5 :(得分:-1)

将导航栏和tabBarController的半透明属性设置为NO。这将解决您的问题。