【问题标题】:setNavigationBarHidden with animation not working on iPad带有动画的 setNavigationBarHidden 在 iPad 上不起作用
【发布时间】:2011-12-26 06:33:25
【问题描述】:

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

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

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

【问题讨论】:

  • 你能检查一下 self.navigationController 是否不为空吗?
  • navigationController 不为空。导航栏显示正确,唯一的问题是没有 iPhone 上的动画。
  • 同时还有其他动画吗?
  • 不是直接在导航控制器上,而是在其他显示的视图上是的。请注意,在 iPhone 上会显示相同的动画,所以我认为这不会产生影响。
  • 如果您只提供这一行,我们可能很难找出确切的错误点......

标签: iphone ios ipad uinavigationcontroller uinavigationbar


【解决方案1】:

这里最好的解决方案可能是将 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];
}

【讨论】:

  • 当用户点击一个按钮时应该会出现该栏。所以我不能把代码放在 viewWillAppear
  • 你的回答是有效的,所以如果没有人能解释为什么我必须为 iPad 制作不同的代码,我会给你奖励。我真的很想了解发生了什么
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    谢谢,

    MinusMaster

    【讨论】:

    • 是的,当我开始一个新项目时,它也对我有用。所以这一定是我在我的其余代码上所做的,适用于 iPhone 但不适用于 iPad...
    • 是的,你已经审查了你。可能你会发现任何与此相关的东西。
    【解决方案4】:

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

    【讨论】:

    • 确实你是对的!我会试着看看我做了什么让动画在 iPad 上而不是在 iPhone 上出现问题。我现在不知道。
    • 发布一些代码可能会让您更快地回答可能出现的问题...
    猜你喜欢
    • 1970-01-01
    • 2018-06-02
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多