首页 文章

ios 7状态栏和导航栏问题

提问于
浏览
0

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

  • 在故事板中取消选中'under top bars'属性

  • 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 ..为什么这个?希望有人解释我!谢谢是提前:)

3 回答

  • 0

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

  • 1

    确保在viewWillAppear中设置它:

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

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

相关问题