自定义iOS的状态栏
有时候,需要在状态栏上显示一些自定义信息,比如新浪微博的官方iOS客户端:告知用户信息处于发送队列、发送成功或者发送失败。
如上图,通过在状态栏显示自定义信息,可以给用户友好又不影响软件使用的提示。
为此,我们显得定义一个自定义状态栏类,包含一个显示信息的Label:
@interface CustomStatusBar : UIWindow
{UILabel *_messageLabel;
}- (void)showStatusMessage:(NSString *)message;
- (void)hide;@end
接着,设置大小和系统状态栏一致,背景为黑色:
self.frame = [UIApplication sharedApplication].statusBarFrame;
self.backgroundColor = [UIColor blackColor];
到这里,为了让自定义的状态栏可以让用户看到,还需要设置它的windowLevel。
在iOS中,windowLevel属性决定了UIWindow的显示层次。默认的windowLevel为UIWindowLevelNormal,即0.0。
系统定义了三个层次如下,具体可参考官方文档:
const UIWindowLevel UIWindowLevelNormal;
const UIWindowLevel UIWindowLevelAlert;
const UIWindowLevel UIWindowLevelStatusBar;
typedef CGFloat UIWindowLevel;
为了能够覆盖系统默认的状态栏,我们把自定义的状态栏的windowLevel调高点:
self.windowLevel = UIWindowLevelStatusBar + 1.0f;
最后,为显示信息和隐藏添加一点无伤大雅的动画:
- (void)showStatusMessage:(NSString *)message
{self.hidden = NO;self.alpha = 1.0f;_messageLabel.text = @"";CGSize totalSize = self.frame.size;self.frame = (CGRect){ self.frame.origin, 0, totalSize.height };[UIView animateWithDuration:0.5f animations:^{self.frame = (CGRect){ self.frame.origin, totalSize };} completion:^(BOOL finished){_messageLabel.text = message;}];
}- (void)hide
{self.alpha = 1.0f;[UIView animateWithDuration:0.5f animations:^{self.alpha = 0.0f;} completion:^(BOOL finished){_messageLabel.text = @"";self.hidden = YES;}];;
}
完整源码: https://github.com/siqin/CustomStatusBar
Jason Lee @ Hangzhou
Blog: http://blog.csdn.net/jasonblog
Weibo: @思禽饮霜
自定义iOS的状态栏相关推荐
- iOS 7状态栏在iPhone应用程序中恢复到iOS 6默认样式?
本文翻译自:iOS 7 status bar back to iOS 6 default style in iPhone app? In iOS 7 the UIStatusBar has been ...
- ios 系统状态栏样式修改_超简单!!! iOS设置状态栏、导航栏按钮、标题、颜色、透明度,偏移等...
原标题:超简单!!! iOS设置状态栏.导航栏按钮.标题.颜色.透明度,偏移等 1. 要实现以下这些效果都非常简单 2. 废话不多说,先看看实现效果 3. 下面告诉你我为什么说实现这些效果非常简单 比 ...
- iOS 设置状态栏样式
iOS设置状态栏样式可以使用两种方式. 方式一: 直接在需要改变默认状态栏样式的控制器中实现一个方法(其他任何事情都不用做): // 返回状态栏的样式 - (UIStatusBarStyle)pref ...
- android通知栏样式自定义,如何给状态栏上的时钟自定义样式或位置?(位置篇)
原标题:如何给状态栏上的时钟自定义样式或位置?(位置篇) 时间,是状态栏必不可少的空间之一.至于它的重要性和"电量"."信号"相比,哪个更重要.就由用户自行判断 ...
- ios 系统状态栏样式修改_iOS 设置状态栏样式
iOS设置状态栏样式可以使用两种方式. 方式一: 直接在需要改变默认状态栏样式的控制器中实现一个方法(其他任何事情都不用做): // 返回状态栏的样式 - (UIStatusBarStyle)pref ...
- iOS 更改状态栏/导航栏颜色的几种实用方法
实际开发需求: 这样代码之后 导航栏颜色白色,但是状态栏没有显示 这样写之后,导航栏和状态栏都是白色 一. 状态栏的设置 iOS上状态栏就是指的最上面的20像素高的部分,状态栏分前后两部分. 前景部 ...
- ios 系统状态栏样式修改_iOS 一种新的修改导航栏样式的方法(支持iOS10).
iOS 一种新的修改导航栏样式的方法. 开宗明义: 对系统导航栏最底层的UIView加一层CALayer, 通过操作这个自己创建的CALayer来修改导航栏样式. 修改系统导航栏样式的几种方法 1.使 ...
- 自定义iOS导航栏背景,标题和返回按钮文字颜色-----转载自gyz413977349
在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...
- VCTransitionsLibrary –自定义iOS交互式转场动画的库
简介 VCTransitionsLibrary 提供了许多适用于入栈,出栈,模态等场景下控制器切换时的转场动画.它本身提供了一个定义好的转场动画库,你可以拖到自己工程中直接使用;也提供了许多拥有不同转 ...
最新文章
- Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
- 原来Github上也有这么多的JavaScript学习资源!
- oracle 约束 Oracle 10g学习系列(5)
- I NEED A OFFER!(HDU-1203)
- 阿里巴巴公布香港IPO定价:每股176港元
- 当今互联网从业者必看书籍 -- 《自传播》
- mysql 结果集换页_MySQL 按结果集分页
- 天若OCR文字识别软件
- knockout的监控数组实现 - 司徒正美
- 硬盘上出现0KB文件无法删除解决
- UE4 解决半透明材质显示错误
- 记录下我磕磕碰碰的三个月找工作经历,offer拿到手软
- 高斯滤波及高斯卷积核C++实现
- 举例:大学怎么过的一种思路
- ExtJS EditorGridPanel 示例之xml格式Store前后台增删改查
- 关于PolarCode方案被5G标准采纳这件事
- NLP入门_自然语言处理_AI分支
- java ssm基于springboot的通知反馈系统
- java 0l_关于java:[L数组符号-它来自哪里?
- 【原创】 ES5高效封装WIN10系统教程2020系列(五)常用软件安装及设置