加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xcode – iOS 7状态栏和self.view.frame以及self.view.bounds

发布时间:2020-12-14 19:30:26 所属栏目:百科 来源:网络整理
导读:我最近发布了一个iOS6应用程序,我需要为iOS 7更新它.新状态栏有点问题. self.view的框架/界限似乎已经改变(20分),我使用self.view.bounds来确定一些元素的位置.我一直在寻找一些解决方案.基本上我需要更新应用程序,同时仍然支持iOS 6状态栏.这是最好的做法吗
我最近发布了一个iOS6应用程序,我需要为iOS 7更新它.新状态栏有点问题. self.view的框架/界限似乎已经改变(20分),我使用self.view.bounds来确定一些元素的位置.我一直在寻找一些解决方案.基本上我需要更新应用程序,同时仍然支持iOS 6状态栏.这是最好的做法吗?

下面的代码似乎可以检测iOS 7设备并将内容转移到位,但也会导致其他问题.无论如何,我不相信这是最好的方式.

if([[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."][0] intValue] >= 7) {
    CGRect statusBarViewRect = [[UIApplication sharedApplication] statusBarFrame];
    float heightPadding = statusBarViewRect.size.height+self.navigationController.navigationBar.frame.size.height;

    [myContentView setFrame:CGRectMake(0,heightPadding,self.view.frame.size.width,self.view.frame.size.height - heightPadding)];
}

解决方法

您可以通过在iOS7 SDK中实现名为edgesForExtendedLayout的新属性来实现此目的.请添加以下代码来实现此目的,

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;

您需要在 – (void)viewDidLoad方法中添加上述代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读