1. [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; //显示
  2. [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; //隐藏

让状态栏显示网络等待标志

状态栏是可以通过UIApplication类提供的一些方法来修改的,比如完全去掉状态栏或者修改风格,不过这些改变只是在你的程序内部,当你退出你的程序又会复原。

  1. UIApplication *myApp = [UIapplication sharedApplication];

1.隐藏状态栏

  1. [myApp setStatusBarHidden:YES animated:YES];

复制代码

记得隐藏状态栏后的你的“桌面”就增加320×20的大小,所以最好是在任何window或者view创建之前隐藏它。

2.状态栏风格

  1. [myApp setStatusBarStyle: UIStatusbarStyleBlackOpaque];
  1. typedef enum {
  2. UIStatusBarStyleDefault,
  3. UIStatusBarStyleBlackTranslucent,
  4. UIStatusBarStyleBlackOpaque
  5. } UIStatusBarStyle;

3.状态栏方向

  1. [myApp setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];
  1. typedef enum {
  2. UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
  3. //竖屏,垂直向上
  4. UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
  5. //竖屏,垂直方向上下颠倒
  6. UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
  7. //设备逆时针旋转到横屏模式
  8. UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft
  9. //设备顺时针旋转到横屏模式
  10. } UIInterfaceOrientation;

有时候,需要在状态栏上显示一些自定义信息,比如新浪微博的官方iOS客户端:告知用户信息处于发送队列、发送成功或者发送失败。

如上图,通过在状态栏显示自定义信息,可以给用户友好又不影响软件使用的提示。

为此,我们显得定义一个自定义状态栏类,包含一个显示信息的Label:

  1. @interface CustomStatusBar : UIWindow
  2. {
  3. UILabel *_messageLabel;
  4. }
  5. - (void)showStatusMessage:(NSString *)message;
  6. - (void)hide;
  7. @end

接着,设置大小和系统状态栏一致,背景为黑色:

  1. self.frame = [UIApplication sharedApplication].statusBarFrame;
  2. self.backgroundColor = [UIColor blackColor];

到这里,为了让自定义的状态栏可以让用户看到,还需要设置它的windowLevel。

在iOS中,windowLevel属性决定了UIWindow的显示层次。默认的windowLevel为UIWindowLevelNormal,即0.0。

系统定义了三个层次如下,具体可参考官方文档

  1. const UIWindowLevel UIWindowLevelNormal;
  2. const UIWindowLevel UIWindowLevelAlert;
  3. const UIWindowLevel UIWindowLevelStatusBar;
  4. typedef CGFloat UIWindowLevel;

为了能够覆盖系统默认的状态栏,我们把自定义的状态栏的windowLevel调高点:

  1. self.windowLevel = UIWindowLevelStatusBar + 1.0f;

最后,为显示信息和隐藏添加一点无伤大雅的动画:

  1. - (void)showStatusMessage:(NSString *)message
  2. {
  3. self.hidden = NO;
  4. self.alpha = 1.0f;
  5. _messageLabel.text = @"";
  6. CGSize totalSize = self.frame.size;
  7. self.frame = (CGRect){ self.frame.origin, 0, totalSize.height };
  8. [UIView animateWithDuration:0.5f animations:^{
  9. self.frame = (CGRect){ self.frame.origin, totalSize };
  10. } completion:^(BOOL finished){
  11. _messageLabel.text = message;
  12. }];
  13. }
  14. - (void)hide
  15. {
  16. self.alpha = 1.0f;
  17. [UIView animateWithDuration:0.5f animations:^{
  18. self.alpha = 0.0f;
  19. } completion:^(BOOL finished){
  20. _messageLabel.text = @"";
  21. self.hidden = YES;
  22. }];;
  23. }
 

ios状态栏的一些操作的更多相关文章

  1. iOS sqlite 的各种操作

    iOS --SQL的增加.删除.查找.修改 iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Ma ...

  2. XE8 for iOS 状态栏的几种效果

    XE8 实现 iOS 状态栏的几种效果: 一.状态栏底色: 开一个新工程. 设定 Fill.Color 颜色属性. 设定 Fill.Kind = Solid. 无需修改任何官方源码. 二.隐藏状态栏( ...

  3. iOS状态栏颜色

    下面截图给出修改 iOS 状态栏颜色的 4 种方式 Target.png Info.plist.png Storyboard.png code.png 其中第四张图中的代码,直接写在你的任何一个 Vi ...

  4. iOS 状态栏和导航条配置

    iOS 状态栏和导航条配置 一:隐藏: [self.navigationController setNavigationBarHidden:YES animated:YES]; [[UIApplica ...

  5. iOS 检查app版本更新操作

    iOS 检查app版本更新操作 1:获取本地安装的版本信息: [NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle ...

  6. IOS状态栏

    IOS状态栏是什么地方? 它是IOS设备屏幕顶部显示信号以及电池的区域.状态栏默认的高度是20像素,状态栏在软件开发中有何作用?联网应用中可在自动帮用户下载数据时使用,推荐在状态栏中予以显示.状态栏可 ...

  7. 一步操作关闭iOS状态栏(电池栏)

    状态栏某时也蛮碍眼的: 将其关闭很简单:打开项目的info.plist文件,添加新的属性为NO的一行 View controller-based status bar appearance : 最后结 ...

  8. iOS开发之状态栏UIStatusBar图标操作

    NSArray *subIcons = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] val ...

  9. iOS的I/O操作

    一般而言,处理文件时都要经历以下四个步骤: 1.创建文件 2.打开文件,以便在后面的I/O操作中引用该文件 3.对打开的文件执行I/O操作(读取.写入.更新) 4.关闭文件 iOS中,对文件常见的处理 ...

随机推荐

  1. POJ 3581 Sequence ——后缀数组 最小表示法

    [题目分析] 一见到题目,就有了一个显而易见obviously的想法.只需要每次找到倒过来最小的那一个字符串翻转就可以了. 然而事情并不是这样的,比如说505023这样一个字符串,如果翻转了成为320 ...

  2. 常州模拟赛d5t2 mogician

    分析:一个暴力的思想是枚举g,然后枚举每个数ai,看能不能符合要求,这样复杂度是O(nA)的,直接T掉了.也没什么其他的办法了,在暴力的基础上优化一下,优化的关键是要如何快速统计出不满足要求的数的个数 ...

  3. VS的一些错误解决方法记录

    1.errorC2664 "bool CMarkup::AddElem(MCD_CSTR,MCD_CSTR,int)":不能将参数1从“constchar [7]” 转换位&quo ...

  4. leetcode 206 头插法

    头插法,定义temp,Node temp指向每次头结点,Node每次指向要进行头插的节点. 最后返回temp /** * Definition for singly-linked list. * st ...

  5. mysql 插入replace改变原有数据某些字段

    完整原型:(主要看下面例子) replace into rpt_ci_cinema_seller_shift_dt ( BIZ_DATE,CINEMA_CD,SELLER_CD,LOCATION_CD ...

  6. 解决 Mac OS X Retina 屏幕显示环境下 jEdit 字体模糊的方法

    Mac OS X Retina 屏幕显示环境下,字体非常清晰.但是 jEdit 仍然很模糊,虽然 jEdit 用的是 Java,但这并不是理由.因为诸如 NetBeans 以及 IntelliJ ID ...

  7. 阿里云***(java应用)

    阿里云***(FQ)实战 前言 ​ 因为公司涉及国外业务,依赖于google的map服务,生产环境我们使用的是亚马逊服务器,所以访问google地图没问题,但是国内的开发.测试环境,使用的是阿里云,想 ...

  8. 服务器Out of Memory

    之前有次把图片存储在数据库,结果读取时候报错了:Out of Memory.. 图片本来不应该存储在数据库中的,消耗内存太大,既然已经这样,那就先解决问题,不改存储方式. 如果一个应用程序为了提高性能 ...

  9. 前端MVC Vue2学习总结(九)——Vuex状态管理插件

    一.概要 1.1.Vuex定义与注意事项 Vuex是为vue.js框架更好的管理状态而设计一个插件.Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的 ...

  10. Win10 LTSB版本安装

    win10 LTSB版本可以看作是 win10的阉割版,没有了几乎用不到还占资源的应用商店.小娜.没有了 EDGE只有IE11....云云 下载地址  https://msdn.itellyou.cn ...