iOS开发iOS 开发每天分享优质文章

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

2016-11-09  本文已影响236人  BYQiu

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

原因

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

解决方法1

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

解决方法2

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

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusChange) name:UIApplicationWillChangeStatusBarFrameNotification object:nil];

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

上一篇下一篇

猜你喜欢

热点阅读