setNavigationBarHidden,动画无法在iPad上运行

时间:2011-11-10 15:13:10

标签: iphone ios ipad uinavigationcontroller uinavigationbar

当用户点击按钮时,我在我的应用程序中使用以下代码:

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

外观在iPhone上正常动画,但不在iPad上动画。你知道为什么吗?

4 个答案:

答案 0 :(得分:3)

这里最好的解决方案可能是将self.navigationBar.hidden = NO;放在UIViewController的-viewWillAppear:方法中,你不希望这个方法永远隐藏。

编辑:

我发现了这个,可能对你有帮助;

if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
    CGRect rect = self.navigationController.navigationBar.frame;
    rect.origin.y = rect.origin.y < 0 ?
        rect.origin.y + rect.size.height
    :   rect.origin.y - rect.size.height;

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.2];
    self.navigationController.navigationBar.frame = rect;
    [UIView commitAnimations];
}
else 
{
    [self.navigationController setNavigationBarHidden:shouldHide animated:YES];
}

答案 1 :(得分:1)

您确定要在主线程的上下文中调用它吗?

答案 2 :(得分:1)

请检查您编写的其他代码以及视图的属性。我在我的通用应用程序中使用此片段,它在iPhone和iPad上都能正常工作。所以看起来你的视图的其他一些设置(可能是自动调整属性??)会导致这种情况。

答案 3 :(得分:0)

这段代码对我来说很好。我尝试使用导航模板为iphone,然后为两个特定设备的ipad项目升级。并在ipad中运行。然后导航栏隐藏/显示与iphone应用程序相同的动画。

试试这个。愿你有更多的想法。

谢谢,

MinuMaster