UINavigationBar和可用屏幕区域的计算

时间:2010-06-04 06:25:25

标签: iphone

CGRect fullWindowRect = [UIScreen mainScreen].applicationFrame;

是获取可用rect的简单方法,减去状态栏。随着iPad / iPhone在这些基本系统指标上越来越不同,我想在UINavigationBar到位时停止减去44以获得屏幕高度。定位物品非常重要,这样它们就可以通过自己的高度从屏幕底部偏移,即与屏幕底部对齐。

什么是神奇的功能,当然你不仅应该为两个(或更多)可能的导航栏高度做出争议并记住何时应用它们?我不是在这里或其他地方找到答案,但我经常发现“44”。

3 个答案:

答案 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;

像魅力一样工作