【问题标题】:View height error视图高度错误
【发布时间】:2013-09-12 02:14:16
【问题描述】:

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

self.edgesForExtendedLayout = UIRectEdgeNone;

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

我无法上传屏幕截图。在iOS6 看来是正常的,而320*460, 在iOS7320*480,状态栏覆盖视图内容。 如果我使用导航栏并设置self.edgesForExtendedLayout = UIRectEdgeNone; 视图框架变为320*416,将20 用于状态栏,将44 用于导航栏,但我的应用是自定义顶栏,此处不使用导航栏。

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

有什么方法可以让iOS6iOS7 都开心吗?

【问题讨论】:

    标签: statusbar ios7


    【解决方案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;
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    相关资源
    最近更新 更多