Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
社区首页 >专栏 >iOS开启热点或定位时状态栏变化导致布局改变

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

作者头像
BY
发布于 2018-05-11 06:46:56
发布于 2018-05-11 06:46:56
1.7K00
代码可运行
举报
文章被收录于专栏:BY的专栏BY的专栏
运行总次数:0
代码可运行

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

原因

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

解决方法1

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

解决方法2

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

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

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS状态栏使用总结
目录: 一、状态栏与导航栏 二、设置状态栏显隐与字体样式 三、设置状态栏背景色 四、启动页隐藏状态栏 五、状态栏、导航栏相关的常用宏定义 相关文章:iOS导航栏的使用总结 一、状态栏与导航栏 状态栏:显示时间、电池等信息 导航栏:显示app页面标题,返回按钮等 iOS7之前:状态栏与导航栏是分开的; iOS7之后:状态栏与导航栏合在一起;导航部分总高度(64)= 状态栏高度(20) +导航栏内容高度((44) iPhoneX设备出现以后,状态栏的高度变为44,导航栏部分总高度(88) = 状态栏
梧雨北辰
2018/07/06
1.9K0
设计iOS中随系统键盘弹收和内容文字长度自适应高度的文本框
    文本输入框是多数与社交相关的app中不可或缺的一个控件,这些文本输入框应该具备如下的功能:
珲少
2018/08/15
1.5K0
设计iOS中随系统键盘弹收和内容文字长度自适应高度的文本框
六天完成一个简单iOS App - 第二天
第二天任务: 项目主框架搭建完毕后,就可以从各个模块入手完成项目,这里从最简单的关注模块开始。 关注页面的搭建 登录界面的搭建 方法抽取与知识点总结 一. 关注页面的搭建 关注页面我们这里只做未登录的
xx_Cc
2018/05/10
2.1K0
六天完成一个简单iOS App - 第六天
第六天任务 推荐标签页面的完成 圆形头像的设置和封装 评论界面的完成 新帖界面的完成 发布界面的完成 推荐标签页面的完成 点击精华页面左上角按钮来到推荐标签界面。 推荐标签界面 推荐标签的实
xx_Cc
2018/05/10
1.3K0
iOS_监测键盘的显示和隐藏变化,并获得键盘高度,改变tableView的frame和偏移
}#pragma mark 根据键盘高度 改变 输入框和表格 的位置- (void)changeInputViewTableViewPlaceWith:(CGFloat)height { [self.inputView mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self.view); make.bottom.equalTo(self.view).offset(-height); make.height.mas_equalTo(kInputHeight); }]; [self.tableView mas_remakeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view).offset(64); make.width.equalTo(self.view); make.bottom.equalTo(self.inputView.mas_top); //使tableView滑到最下端 NSInteger arrCount = self.messagesArray.count; NSIndexPath *index = [NSIndexPath indexPathForRow:arrCount - 1 inSection:0]; if (arrCount > 0) { [self.tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionBottom animated:YES]; } if (height > kMoreHeight) { CGFloat showhHeight = kHeight - kInputHeight - height - 64; CGFloat allHeight = self.tableView.contentSize.height; CGPoint contentPoint = CGPointMake(0, allHeight - showhHeight); [self.tableView setContentOffset:contentPoint animated:YES]; } }];}
mikimo
2022/07/20
8590
Android状态栏与页面顶部内容重合解决方案
在项目的开发过程中 , 发现创建activity界面后 , 界面顶部的返回按钮被状态栏遮挡住一部分 , 在点击返回的时候,很难触发点击事件,页面也不太美观,话不多说,直接上代码.
SoullessCoder
2019/09/03
1.6K0
Android状态栏与页面顶部内容重合解决方案
iOS:宏定义(项目初期配置)(一)
最近需要重构项目,写个关于重构方面 1.宏定义(基本设置) //读取App的版本号 #define kAPPVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] //弱引用 #define kWeakSelf(type) __weak typeof(type) weak##type = type; //判断设备版iOS9及以上 #define ADVANCE_IOS9 [[[UI
菜菜不吃蔡
2018/12/13
1.1K0
android 设置标题栏背景颜色_状态栏菜单栏都在哪
android中沉浸式状态栏的文章已经满大街了,可是在实现某些效果时,还是得各种搜索,测试一通后,最后还常常满足不了要求,即使好不容易在一部手机上满足了需求,放在另外一手机上,发现效果还各种不适配。今天把自己这几天学到的关于沉浸式状态栏知识进行总结下。
全栈程序员站长
2022/11/01
2.3K0
android 设置标题栏背景颜色_状态栏菜单栏都在哪
iOS多设备适配简史以及相应的API支撑实现
远古的iPhone3和iPhone4时代,设备尺寸都是固定3.5inch,没有所谓的适配的问题,只需要用视图的frame属性进行硬编码即可。随着时间的推移,苹果的设备种类越来越多,尺寸也越来越大,单纯的frame已经不能简单解决问题了,于是推出了AutoLayout技术和SizeClasses技术来解决多种设备的适配问题。一直在做iOS开发的程序员相信在下面的两个版本交界处需要处理适配的坎一定让你焦头烂额过:
欧阳大哥2013
2019/03/05
1.1K0
iOS小技能:设置状态栏背景颜色(图片)
解决办法:既然定位到问题所在,办法就是保证iOS 13 之后,每次也都能拿到有去只有一个对象。方法有很多,我的方法代码如下:使用 static 配合 gcd
公众号iOS逆向
2022/08/22
2K0
iOS小技能:设置状态栏背景颜色(图片)
关于 Android 中的各种 Bar 和“透明状态栏”的一些知识
其实这篇主要是讲解适配状态栏的,在这其中可能有些读者对状态栏(StatusBar)、ActionBar、ToolBar、TitleBar有点混淆或者感觉很混乱,所以就有了这其中的内容。
开发者
2019/12/26
2.8K0
关于 Android 中的各种 Bar 和“透明状态栏”的一些知识
Android 天气APP(二十四)地图天气(上)自动定位和地图点击定位
之前也看过和风天气自己做的APP,主页面的地图点击之后,定位到某一个点,然后查看这个地方的天气,实际思路还是通过区县来查询天气的,只不过,加上了地图就比较的直观,看起来也会觉得很上档次,所以我也决定做一个这样的功能。 这篇文章实现的效果图如下:
晨曦_LLW
2020/09/25
2.1K0
实现 iOS 前台时的推送弹窗效果
原文链接:http://www.jianshu.com/p/67864e1c2085
freesan44
2018/09/05
1.8K0
实现 iOS 前台时的推送弹窗效果
android自定义状态栏颜色
我们知道IOS上的应用,状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,那安卓是否可以呢?若是在安卓4.4之前,答案是否定的,但在4.4之后,谷歌允许开发者自定义状态栏背景颜色啦,这是个不错
xiangzhihong
2018/02/01
1.8K0
android自定义状态栏颜色
Flutter 中键盘弹起时,Scaffold 发生了什么变化
最近刚好有网友咨询一个问题,那就顺便借着这个问题给大家深入介绍下 Flutter 中键盘弹起时,Scaffold 的内部发生了什么变化,让大家更好理解 Flutter 中的输入键盘和 Scaffold 的关系。
GSYTech
2021/03/02
2.1K0
Flutter 中键盘弹起时,Scaffold 发生了什么变化
iOS开发之扫描二维码
自iOS7以后,iOS扫描二维码不需要借助于第三方框架了,苹果在AVFoundation中原生支持了扫描二维码的API,主要涉及到5个类,这5个类在自定义相机或者视频时也用得上,网上有很多介绍,这5个类分别为: AVCaptureSession:媒体捕获会话,负责把捕获的音视频数据输出到输出设备中。 AVCaptureDevice:输入设备,如麦克风、摄像头。 AVCaptureDeviceInput:设备输入数据管理对象,可以根据AVCaptureDevice创建对应的AVCaptureDeviceI
YungFan
2018/05/03
1.9K0
iOS开发之扫描二维码
2个函数终结状态栏6个疑难杂症
https://github.com/Blankj/AndroidUtilCode
陈宇明
2020/12/15
4980
2个函数终结状态栏6个疑难杂症
iOS程序框架设计之皮肤切换功能 原
        移动应用的开发中,有时我们会需要例如更换皮肤此类的功能,andorid采用xml配置UI的方式,这个问题或许还容易解决些,iOS的主要UI逻辑则是在代码中控制的,如果没有一个强大的框架方案,这个问题将变得非常棘手。网上也有很多诸如此类功能的优秀案例与框架,在这篇博客中,我与大家分享下我的解决方案,其中如果有不恰或者糟糕之处,希望与高人一起交流。
珲少
2018/08/16
5940
iOS程序框架设计之皮肤切换功能
                                                                            原
Android 透明状态栏(伪沉浸式)
而由于 Android API 的不同,需要考虑 4.4、5.0、6.0 前后的不同。
三流之路
2018/09/11
2.4K0
Android 透明状态栏(伪沉浸式)
iOS状态栏设置
这两种方式是根据UIViewControllerBasedStatusBarAppearance也就是View controller-based status bar appearance的值的不同有相应的设置
码客说
2019/10/22
2.8K0
推荐阅读
相关推荐
iOS状态栏使用总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验