2011-11-10 25 views
1

我用下面的代码在我的应用程序时,一个按钮用户点击:setNavigationBarHidden动画不工作在iPad

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

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

+0

你可以检查self.navigationController是否为空? –

+0

navigationController不为null。导航栏显示正确,唯一的问题是iPhone上没有动画。 – CedricSoubrie

+0

有没有其他的动画在同一时间? – Zoleas

回答

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]; 
} 
+0

用户单击按钮时应显示条。所以我不能把代码放在viewWillAppear – CedricSoubrie

+0

我刚刚编辑我的评论,看看。 – relower

+0

我想避免自己动画,如果有更清晰的方式... – CedricSoubrie

1

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

+0

是的,无论如何它在iPhone上工作没有任何问题 – CedricSoubrie

0

此代码适用于我。我尝试用iPhone的导航模板,然后为两个特定设备的iPad进行项目升级。并运行在iPad上。然后导航栏隐藏/显示与iPhone应用程序一样的动画。

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

感谢,

MinuMaster

+0

是的,当我开始一个新项目时,它也适用于我。所以它一定是我在我的代码的其他工作的iPhone,但不是在iPad上... – CedricSoubrie

+0

是的,你有检讨你。可能你会发现与此相关的任何事情。 – MinuMaster

1

做检查你有你的观点的属性一起写的其他代码。我在我的通用应用程序中使用这个片段,并且它在iPhone和iPad上都能正常工作。所以看起来像你的意见的其他设置(可能是autosizing属性??)造成这种情况。

+0

确实你是对的!我会试着去看看我在iPad上制作动画,而不是在iPhone上制作动画。我现在没有线索。 – CedricSoubrie

+0

大概发布一些代码可能会让你的答案更快,但可能会出错。 – lostInTransit