查看高度错误

时间:2013-09-12 02:14:17

标签: statusbar ios7

我现在正在玩iOS7,发现我的视图界限变为全屏 例如。在320*460现在320*480之前20px状态栏超出我的视野, 我知道iOS7开始支持全屏布局,并且有一个

self.edgesForExtendedLayout = UIRectEdgeNone;

设置,但此行似乎仅在显示导航栏时有效。

我无法上传截图。在iOS6视图中看似正常,320*460, 在iOS7 320*480中,状态栏包含视图内容。 如果我使用导航栏并设置self.edgesForExtendedLayout = UIRectEdgeNone; 视图框架变为320*416,状态栏显示20,导航栏显示44,但我的应用是自定义顶部栏,此处未使用导航栏。

如果我更改窗口框架,它会向下移动20 px,但状态栏似乎被剪切并显示黑色320*20条,

任何让iOS6iOS7都满意的方法吗?

1 个答案:

答案 0 :(得分:1)

根据我的观察,您需要更改tableview的内容插入,因为您拥有与状态栏重叠的自定义顶部栏。请参阅以下代码

NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ( [[vComp objectAtIndex:0] intValue] >= 7)//do this only for ios7+ {
        [self.tableview setContentInset:UIEdgeInsetsMake(64, 0, 0, 0)];
    }

其中tableview指的是超出状态栏的tableview。我已将顶部位置硬编码为64(状态栏高度(20)+导航栏高度(44))。请根据您的设计更新。

setContentInset无法使用视图。对于视图,您需要更新帧原点y位置,如下所示

if ( [[vComp objectAtIndex:0] intValue] >= 7)//do this only for ios7+ {
        CGRect viewFrame = self.view.frame;
        viewFrame.origin.y = 64;//change this according to ur top bar height.
        self.view.frame = viewFrame;
}