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];
剩下的具体实现就自行处理了。