0

我的应用程序视图与 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)所以导航栏的高度似乎是64 ..这是为什么? 希望有人解释我!谢谢是提前:)

4

3 回答 3

2

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

于 2013-10-25T13:40:48.583 回答
1

确保在 viewWillAppear 中设置:

self.navigationController.navigationBar.translucent = NO;
self.edgesForExtendedLayout = UIRectEdgeNone;
于 2013-10-25T14:25:10.970 回答
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); 
} 
于 2013-10-25T14:22:02.947 回答