博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【UIKit】解决iOS7状态栏问题
阅读量:5846 次
发布时间:2019-06-18

本文共 2958 字,大约阅读时间需要 9 分钟。

#pragma mark - 解决iOS7状态栏问题- (void)viewWillAppear:(BOOL)animated{    // 注意点:自定义布局方法必须放在隐藏或显示导航栏(如果有的话)这句话后面,不然会乱;    self.navigationController.navigationBarHidden = YES;    // 自定义布局    [self autoAdaptionLayer];}// 自定义布局- (void)autoAdaptionLayer{    // 如果是IOS7.0以上    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)    {        self.edgesForExtendedLayout = UIRectEdgeNone;                   // 非全屏布局        self.extendedLayoutIncludesOpaqueBars = NO;                     // 当导航栏使用不透明图片,View不延伸之Bar下面        self.modalPresentationCapturesStatusBarAppearance = NO;        [self setNeedsStatusBarAppearanceUpdate];                       // 设置StatusBar的样式                CGRect viewBounds = self.view.bounds;                // ******* 这个修订很重要 *******        if(viewBounds.size.height == 548)            viewBounds.size.height = 568;        if(viewBounds.size.height == 460)            viewBounds.size.height = 480;                CGFloat topBarOffset = 0; // self.topLayoutGuide.length;        CGFloat myHeight = viewBounds.size.height;        // 存在导航栏控制器        if (self.navigationController)        {            // 导航栏隐藏的时候(底部空间高度需要-20)            if (self.navigationController.navigationBarHidden)            {                viewBounds.origin.y = topBarOffset - 20;                viewBounds.size.height = myHeight - 20;            }            else  // 导航栏显示的时候(底部空间高度需要-84)            {                viewBounds.origin.y = topBarOffset * -1;                viewBounds.size.height = myHeight - 64;            }        }        else        {            viewBounds.origin.y = topBarOffset -20;            viewBounds.size.height = myHeight - 20;        }        self.view.bounds = viewBounds;    }    // IOS7.0以下    else    {        CGRect viewBounds = self.view.bounds;                // ******* 这个修订很重要 *******        if(viewBounds.size.height == 548)            viewBounds.size.height = 568;        if(viewBounds.size.height == 460)            viewBounds.size.height = 480;                CGFloat myHeight = viewBounds.size.height;        // 判断是否存在导航栏控制器        if (self.navigationController)        {            // 导航栏隐藏的时候(底部空间高度需要-20)            if (self.navigationController.navigationBarHidden)            {                viewBounds.size.height = myHeight;            }            else  // 导航栏显示的时候(底部空间高度需要-22)            {                viewBounds.size.height = myHeight - 22;            }        }        else        {            viewBounds.size.height = myHeight;        }        self.view.bounds = viewBounds;    }}// 设置StatusBar的样式// 上面这句方法用于刷新显示statusBar的样式和是否隐藏,如果需要就在当前使用的VC中重写下面两个方法- (UIStatusBarStyle)preferredStatusBarStyle{    // UIStatusBarStyleDefault    // UIStatusBarStyleLightContent    // UIStatusBarStyleBlackTranslucent    // UIStatusBarStyleBlackOpaque    return UIStatusBarStyleLightContent;  // 会多次调用}- (BOOL)prefersStatusBarHidden{    return NO; // 会多次调用}

 

转载于:https://www.cnblogs.com/madeininfi/p/3676496.html

你可能感兴趣的文章
发力IoT领域 Marvell注重生态系统发展
查看>>
你应该知道的 RPC 原理
查看>>
Ubuntu安装词典
查看>>
Spring解析
查看>>
python中str和repr区别
查看>>
数据挖掘-同比与环比
查看>>
RedHat6 管理应用服务【11】
查看>>
stm32F10x复习-1
查看>>
[转] vue异步处理错误
查看>>
CSS 3D动画概述菜鸟级解读之一
查看>>
kindeditor.net应用
查看>>
函数preg_replace()与str_replace()
查看>>
HTTP工具CURL的使用简介
查看>>
P2P的远程协助系统技术分析[转]
查看>>
在.NET开发中的单元测试工具之(1)——NUnit
查看>>
windows2008支持多用户同时登录
查看>>
UEditor 1.2.5 for java 自定义配置
查看>>
从Redis的数据丢失说起
查看>>
理解对象(通过关联数组和基本包装类型)
查看>>
linux查看系统版本(32位/64位)的方法
查看>>