我的应用程序的视图与ios7设备中的状态栏和navigationBar重叠,所以我尝试了很多解决方案
但这些都没有奏效。 我的最后一次试验是将这些行添加到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 :(得分:2)
有关差异的更好解释,请参阅此转换指南(link)。
答案 1 :(得分:1)
确保在viewWillAppear:
中设置此项self.navigationController.navigationBar.translucent = NO;
self.edgesForExtendedLayout = UIRectEdgeNone;
答案 2 :(得分: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);
}