2013-10-25 135 views
0

我的应用程序的观点是重叠在ios7设备状态栏的导航栏,所以我尝试了很多“下顶筋”的地产解决方案IOS 7状态栏和导航栏问题

  • 取消选中的故事板
  • 自我。 edgesForExtendedLayout = UIRectEdgeNone;
  • 集增量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]; 
} 

它工作的很好,当导航栏被隐藏,但并不隐藏nagivigation时, 导航栏的框架(0,20,320,44)否(0 ,0,320,44) 所以navigationBar的高度似乎是64 .. 这是为什么?希望有人解释我! 感谢提前:)

+0

可能重复和导航栏出现在我的视图的边界在iOS 7中](http://stackoverflow.com/questions/17074365/status-bar-and-navigation-bar-appear-over-my-views-bounds-in-ios-7 ) –

+0

@EclipseKim请查阅我提供的指南,并告诉我是否需要更多信息。如果该指南足以帮助您,请随时用复选标记接受答案。谢谢 –

回答

2

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

0

为避免与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); 
} 
1

确保你设置这viewWillAppear中发生:

self.navigationController.navigationBar.translucent = NO; 
self.edgesForExtendedLayout = UIRectEdgeNone; 
[状态栏的