美文网首页iOS开发iOS 开发每天分享优质文章
iOS开启热点或定位时状态栏变化导致布局改变

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

作者: BYQiu | 来源:发表于2016-11-09 15:32 被阅读236次

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

    原因

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

    解决方法1

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

    解决方法2

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

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

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

    相关文章

      网友评论

        本文标题:iOS开启热点或定位时状态栏变化导致布局改变

        本文链接:https://www.haomeiwen.com/subject/myttpttx.html