【问题标题】:ios 7 status bar and navigation bar issueios 7 状态栏和导航栏问题
【发布时间】:2013-10-25 13:37:03
【问题描述】:

我的应用程序视图与 ios7 设备中的状态栏和导航栏重叠,所以我尝试了很多解决方案

  • 取消选中情节提要中的“顶栏下方”属性
  • self.edgesForExtendedLayout = UIRectEdgeNone;
  • 在情节提要中将 delta y 设置为 -20...

但这些都不起作用。 我的最后一次尝试是将这些行添加到 appdelegate 的 didFinishLaunchingWithOptions

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
application.statusBarStyle = UIStatusBarStyleLightContent;
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
    self.window.clipsToBounds =YES;
} else {
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
}

在隐藏导航栏但不隐藏导航时效果很好, 导航栏的框架是 (0, 20, 320, 44) 而不是 (0, 0, 320, 44) 所以navigationBar的高度好像是64.. 为什么是这样?希望有人解释我! 谢谢是提前:)

【问题讨论】:

标签: objective-c ios7


【解决方案1】:

有关差异的更好解释,请参阅此转换指南 (link)。

【讨论】:

    【解决方案2】:

    确保您在 viewWillAppear 中进行了设置:

    self.navigationController.navigationBar.translucent = NO;
    self.edgesForExtendedLayout = UIRectEdgeNone;
    

    【讨论】:

      【解决方案3】:

      为避免与UINavigationBar 重叠,您必须将其translucent 属性设置为NO

      对于状态栏,您必须通过指定其样式来手动设置它,然后重新定位整个窗口的框架。我会在此基础上添加一个 iOS 7 条件,以确保只有运行 iOS 7 的用户才会发生这种情况。

      if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
      
          [application setStatusBarStyle:UIStatusBarStyleLightContent];
          self.window.clipsToBounds =YES;
          self.window.frame =  CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height - 20); 
      } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多