CGRect fullWindowRect = [UIScreen mainScreen].applicationFrame;
是获取可用rect的简单方法,减去状态栏。随着iPad / iPhone在这些基本系统指标上越来越不同,我想在UINavigationBar到位时停止减去44以获得屏幕高度。定位物品非常重要,这样它们就可以通过自己的高度从屏幕底部偏移,即与屏幕底部对齐。
什么是神奇的功能,当然你不仅应该为两个(或更多)可能的导航栏高度做出争议并记住何时应用它们?我不是在这里或其他地方找到答案,但我经常发现“44”。
答案 0 :(得分:12)
CGFloat navHeight = self.navigationController.navigationBarHidden ? 0 :
self.navigationController.navigationBar.frame.size.height;
答案 1 :(得分:3)
永远不要使用'44'这样的硬编码,因为它不符合'兼容性规则'。没有人知道下一代的iPhone会有什么样的“状态栏”。
除了计算状态栏或导航栏的确切高度外,您可以使用以下内容:
[[UIScreen mainScreen] bounds];
[[UIScreen mainScreen] applicationFrame];
答案 2 :(得分:1)
我认为您在导航栏存在时尝试找到可用的框架。我只是向下移动applicationFrame的原点并将高度减少相同的数量
CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
appFrame.origin.y += self.navigationController.navigationBar.frame.size.height;
appFrame.size.height -= self.navigationController.navigationBar.frame.size.height;
像魅力一样工作