代码之家  ›  专栏  ›  技术社区  ›  Adam Eberbach Adil Shaikh

uinavigationbar和可用屏幕面积的计算

  •  2
  • Adam Eberbach Adil Shaikh  · 技术社区  · 16 年前
    CGRect fullWindowRect = [UIScreen mainScreen].applicationFrame;
    

    是一个简单的方法来获得可用的rect,减去状态栏。随着ipad/iphone在这些基本系统指标上的差异越来越大,当uinavigationbar就位时,我希望停止减去44以获得屏幕高度。重要的是要定位物体,使它们从屏幕底部偏移自己的高度,即与屏幕底部对齐。

    神奇的功能是什么,当然你不应该只为两个(或更多)可能的导航栏高度做常量,还记得什么时候应用它们?我在这里或其他地方找不到答案,但我经常找到“44”。

    3 回复  |  直到 12 年前
        1
  •  12
  •   gavriln    12 年前
    CGFloat navHeight = self.navigationController.navigationBarHidden ? 0 :
        self.navigationController.navigationBar.frame.size.height;
    
        2
  •  3
  •   Elliot Chen    16 年前

    不要使用像'44'这样的硬编码,因为它不遵循'compatibility rule'。没人知道下一代的iPhone会有什么样的“状态栏”。

    除了计算状态栏或导航栏的确切高度外,您还可以使用以下内容:

    [[UIScreen mainScreen] bounds]; 
    [[UIScreen mainScreen] applicationFrame];
    
        3
  •  1
  •   hvvc    12 年前

    我想你是想在有导航条的情况下找到可用的框架。我只是将applicationframe的原点向下移动,并将高度减少相同的量。

    CGRect appFrame = [[UIScreen mainScreen] applicationFrame];    
    appFrame.origin.y += self.navigationController.navigationBar.frame.size.height;
    appFrame.size.height -= self.navigationController.navigationBar.frame.size.height;
    

    很有魅力