【问题标题】:iOS 7 + iPad: UISearchBar causes navigation bar content to be mixed with status bariOS 7 + iPad:UISearchBar 导致导航栏内容与状态栏混合
【发布时间】:2013-12-26 16:20:33
【问题描述】:

这只发生在 iPad 上:

  • UIViewController 中添加一个简单的UISearchBar 并带有 UINavigationController
  • [可选] 设置条形颜色:self.navigationController.navigationBar.barTintColor = [UIColor clearColor];
  • 运行应用程序。
  • 点击搜索栏(触发动画)
  • 现在状态栏与顶部导航栏内容(即标题、按钮)混合在一起

点击前:

点击搜索栏后:

任何颜色都会出现问题,但使用所附照片中的[UIColor clearColor] 可以更容易地查看问题。

任何解决方案都会很棒,尽管我更喜欢每次都隐藏导航栏标题和按钮更优雅的东西。

编辑

只有在viewdidLoad 中使用以下代码时才会出现此错误:

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

【问题讨论】:

  • 你解决了这个问题吗?

标签: ios ios7 uisearchbar statusbar


【解决方案1】:

我想我曾经遇到过同样的问题。如果您使用情节提要,请检查所有出口是否已设置:

这修复了动画...

【讨论】:

  • 不,我已经设置了所有代表。
【解决方案2】:

我最终使用的解决方法:

- (BOOL)prefersStatusBarHidden
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        return self.searchDisplayController.isActive;

    return NO;
}

这样当用户搜索时它会隐藏状态栏。

【讨论】:

    【解决方案3】:

    遇到了完全相同的问题,结果证明是一行:

    self.searchDisplayController.searchBar.translucent = NO;
    

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。以下代码有效:

      self.edgesForExtendedLayout = UIRectEdgeTop;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多