ios状态栏的一些操作
- [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; //显示
- [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; //隐藏
让状态栏显示网络等待标志
状态栏是可以通过UIApplication类提供的一些方法来修改的,比如完全去掉状态栏或者修改风格,不过这些改变只是在你的程序内部,当你退出你的程序又会复原。
- UIApplication *myApp = [UIapplication sharedApplication];
1.隐藏状态栏
- [myApp setStatusBarHidden:YES animated:YES];
复制代码
记得隐藏状态栏后的你的“桌面”就增加320×20的大小,所以最好是在任何window或者view创建之前隐藏它。
2.状态栏风格
- [myApp setStatusBarStyle: UIStatusbarStyleBlackOpaque];
- typedef enum {
- UIStatusBarStyleDefault,
- UIStatusBarStyleBlackTranslucent,
- UIStatusBarStyleBlackOpaque
- } UIStatusBarStyle;
3.状态栏方向
- [myApp setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];
- typedef enum {
- UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
- //竖屏,垂直向上
- UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
- //竖屏,垂直方向上下颠倒
- UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,
- //设备逆时针旋转到横屏模式
- UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
- //设备顺时针旋转到横屏模式
- } UIInterfaceOrientation;
有时候,需要在状态栏上显示一些自定义信息,比如新浪微博的官方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;
- }];;
- }
ios状态栏的一些操作的更多相关文章
- iOS sqlite 的各种操作
iOS --SQL的增加.删除.查找.修改 iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Ma ...
- XE8 for iOS 状态栏的几种效果
XE8 实现 iOS 状态栏的几种效果: 一.状态栏底色: 开一个新工程. 设定 Fill.Color 颜色属性. 设定 Fill.Kind = Solid. 无需修改任何官方源码. 二.隐藏状态栏( ...
- iOS状态栏颜色
下面截图给出修改 iOS 状态栏颜色的 4 种方式 Target.png Info.plist.png Storyboard.png code.png 其中第四张图中的代码,直接写在你的任何一个 Vi ...
- iOS 状态栏和导航条配置
iOS 状态栏和导航条配置 一:隐藏: [self.navigationController setNavigationBarHidden:YES animated:YES]; [[UIApplica ...
- iOS 检查app版本更新操作
iOS 检查app版本更新操作 1:获取本地安装的版本信息: [NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle ...
- IOS状态栏
IOS状态栏是什么地方? 它是IOS设备屏幕顶部显示信号以及电池的区域.状态栏默认的高度是20像素,状态栏在软件开发中有何作用?联网应用中可在自动帮用户下载数据时使用,推荐在状态栏中予以显示.状态栏可 ...
- 一步操作关闭iOS状态栏(电池栏)
状态栏某时也蛮碍眼的: 将其关闭很简单:打开项目的info.plist文件,添加新的属性为NO的一行 View controller-based status bar appearance : 最后结 ...
- iOS开发之状态栏UIStatusBar图标操作
NSArray *subIcons = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] val ...
- iOS的I/O操作
一般而言,处理文件时都要经历以下四个步骤: 1.创建文件 2.打开文件,以便在后面的I/O操作中引用该文件 3.对打开的文件执行I/O操作(读取.写入.更新) 4.关闭文件 iOS中,对文件常见的处理 ...
随机推荐
- 【2018.10.20】CXM笔记(思维)
1. 给你个环状字符串,问从哪个地方拆开能使它的字典序最小. 先预处理任意子串的哈希值. 然后枚举拆点,将它与当前最优的拆点比较谁更优(就是从哪拆的字典序更小),具体方法是二分+哈希找出两串最长的相同 ...
- 【BZOJ3143】【HNOI2013】游走 && 【BZOJ3270】博物馆 【高斯消元+概率期望】
刚学完 高斯消元,我们来做几道题吧! T1:[BZOJ3143][HNOI2013]游走 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小 ...
- 【HDOJ5978】To begin or not to begin(概率)
题意:有k个黑球和1个红球,两个轮流抽,抽到红球算赢,问先手赢的概率大还是后手大还是相等 k<=1e5 思路:手算前几项概率 大胆猜想 #include<cstdio> #inclu ...
- MySQL实现了四种通信协议
原文链接:http://blog.csdn.net/yangling132/article/details/50932705[侵删] TCP/IP协议,通常我们通过来连接MySQL,各种主要编程语言都 ...
- MongoDB数据关系的表达
虽说MongoDB是非关系型数据库,但由于大部分情况下数据之间是存在关系的,所以MongoDB也需要一些方式来表达数据之间的关系.MongoDB表达数据关系的方式有两种:文档嵌套和数据库引用. 一.文 ...
- 数据库数据导出CSV文件,浏览器下载
直接上代码: def download(request): # 从数据库查询数据 data_list = Info.objects.all() # 定义返回对象 response = HttpResp ...
- luogu P3865 【模板】ST表
题目背景 这是一道ST表经典题——静态区间最大值 请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1)O(1) 题目描述 给定一个长度为 NN 的数列,和 MM 次询 ...
- java队列--queue详细分析
---恢复内容开始--- Queue:基本上一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口,LinkedList实现了Li ...
- (转) go Cron的使用
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...
- SystemTap使用技巧 1 - 4 非常重要
http://blog.csdn.net/wangzuxi/article/details/42849053