在 iOS 7 中,为啥视图高度与 iOS 6 中的相同视图不同

Posted

技术标签:

【中文标题】在 iOS 7 中,为啥视图高度与 iOS 6 中的相同视图不同【英文标题】:In iOS 7, why view height different from the same view in iOS 6在 iOS 7 中,为什么视图高度与 iOS 6 中的相同视图不同 【发布时间】:2013-09-15 22:29:44 【问题描述】:

我有一个视图控制器,它是 UINavigationController 的根视图控制器,UINavigationControllerUITabBarViewController 的控制器

像这样的结构:

UITabBarViewController->UINavigationViewController->UIViewController

但问题是,当我使用这个视图控制器的 self.view.frame.size.height 属性时,我得到了不同的结果。

ios 6 中,我得到 548。但在 iOS 7 中,我得到 568。所以我可以准确地放置我的自定义子视图,因为它的位置基于视图的高度。

【问题讨论】:

请阅读 iOS 7 UI 过渡指南 (developer.apple.com/library/prerelease/ios/documentation/…),其中涵盖了状态栏的更改以及如何处理它们。 为什么没有人阅读官方文档...? 你真的不应该手动设置框架。现在很多版本都推荐使用 AutoLayout。它有它的问题,但对于通用视图来说它非常好。 【参考方案1】:

iOS7 视图位于导航栏下方,您可以在 viewController 中停止视图位于导航栏下方:

self.edgesForExtendedLayout = UIRectEdgeNone;

【讨论】:

以上是关于在 iOS 7 中,为啥视图高度与 iOS 6 中的相同视图不同的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 下运行我的 iOS 6 应用程序时,为啥我的视图上没有正确显示阴影?

iOS 估计行高度在 plus 设备中不起作用

iOS 8:为啥 NSLayoutAttributeCenterX 无法将我的视图居中? (适用于 iOS 7)

iOS 自动布局 ios 7 与 ios 8

iOS 7状态栏在iPhone应用程序中恢复到iOS 6默认样式?

iOS 7 状态栏在 iPhone 应用程序中回到 iOS 6 默认样式?