前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS开启热点或定位时状态栏变化导致布局改变

iOS开启热点或定位时状态栏变化导致布局改变

作者头像
BY
发布2018-05-11 14:46:56
1.7K0
发布2018-05-11 14:46:56
举报
文章被收录于专栏:BY的专栏BY的专栏

最近在项目中遇到一种情况就是当其他应用(如百度地图)在使用定位,或者开启手机热点,状态栏会显示"百度地图"正在使用您的位置信息、个人热点:1个连接。并且状态栏将会变为蓝色或红色,导致某些控件的布局下移。如下图映客APP的Bar。

原因

当使用某些系统功能时(如上述的定位,热点,或者录音)时,系统的状态栏高度会由原来的20变为40,这时View的高度自然就会减少20,这就导致了某些控件布局的改变(一般是下移20)

解决方法1

第一种方法比较简单,将布局使用AutoLayout进行布局,并且不要相对于View进行布局。我使用第一种方式就很轻松解决了。

解决方法2

第二种方法就比较麻烦,我们需要监听状态栏的高度变化(UIApplicationWillChangeStatusBarFrameNotification),然后再对约束进行处理,和键盘监听类似

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusChange) name:UIApplicationWillChangeStatusBarFrameNotification object:nil];

剩下的具体实现就自行处理了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.11.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原因
  • 解决方法1
  • 解决方法2
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档