2

我现在正在玩iOS7,发现我的视图边界变成了全屏,例如。之前在我的视图320*460320*48020px状态栏,我知道iOS7开始支持全屏布局,并且有一个

self.edgesForExtendedLayout = UIRectEdgeNone;

设置,但这条线似乎只有在显示导航栏时才有效。

我不能上传截图。在iOS6视图中看起来很正常,并且320*460iOS7其中320*480,状态栏覆盖了视图内容。如果我使用导航栏并将self.edgesForExtendedLayout = UIRectEdgeNone; 视图框架设置为320*416,则离开20状态栏和44导航栏,但我的应用程序是自定义顶部栏,此处不使用导航栏。

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

有什么方法可以让双方都iOS6开心iOS7吗?

4

1 回答 1

1

根据我的观察,您需要更改表格视图的内容插图,因为您有与状态栏重叠的自定义顶栏。请看下面的代码,

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;
}
于 2013-09-17T07:02:28.507 回答