ios - 如何修复 iOS 7 状态栏的高度和宽度问题

标签 ios objective-c ios7 statusbar

我制作了一个自定义 toast 库(非常简单,只是一个出现在导航栏下方的框)。这在我的目标群体 iOS 6 中运行良好。但由于 iOS 7 已发布,它无法正确显示。

我试图修复它的方法是通过这段代码:

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7,0")){
    self.offset = [UIApplication sharedApplication].statusBarFrame.size.height + self.viewController.navigationController.navigationBar.frame.size.height;
}

我做了一个可以在Stack overflow上找到的宏来检测iOS版本是否为7,然后添加状态栏高度和导航高度。这在 iOS 7 的纵向模式下工作正常,但当我切换到横向时偏移量变为 512?

谁能解释这是怎么发生的以及我该如何解决这个问题?


决定拆分代码作为评论,看看究竟是什么导致了差异。我所做的是:

CGFloat statusBarHeight =[UIApplication sharedApplication].statusBarFrame.size.height;

CGFloat navBar = self.viewController.navigationController.navigationBar.frame.size.height;
self.offset = statusBarHeight + navBar;
NSLog(@"Init - statusBarHeight: %f, navBar: %f", statusBarHeight, navBar);

由于某些原因,statusbar 纵向为 20,横向为 480


这是因为高宽调反了,答案来自评论

最佳答案

因为我之前做过同样的“修复”,所以我注意到在风景中

[UIApplication sharedApplication].statusBarFrame.size.width  

 [UIApplication sharedApplication].statusBarFrame.size.height  

值被切换。

关于ios - 如何修复 iOS 7 状态栏的高度和宽度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19534644/

相关文章:

iphone - 应用程序 "failed to resume in time"并挂起

ios - iOS 6 和 iOS 7 在模拟器中的显示屏幕不同

ios - iOS 中的信号选项发生变化

python - Objective-C 将 NSData 压缩为 Python gzip 字符串?

objective-c - NSArray 不接受 NSNumber

c++ - 在 Cocoa/Objective-C 项目中包含 C++ 代码时出现未知类型名称 'class'

uitableview - 如果未声明 heightForRowAtIndexPath,iOS 7.1 会崩溃

ios - 在 iOS 中一天中的特定时间调用方法

ios - 如何将 UIView 放在 UITableView 的节标题之上?

ios - 了解 iOS 中的 View 层次结构