博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【项目经验】iphone自定义状态栏
阅读量:6123 次
发布时间:2019-06-21

本文共 2499 字,大约阅读时间需要 8 分钟。

#import 
//自定义状态栏,状态栏显示灰色背景并【indicator message】。用于耗时操作的状态栏信息提示 //例如:访问网络时,提示正在获取网络数据,或者正在提交数据至服务器等提示 @interface CHStatusBar : UIWindow { @private UILabel *lblStatus; UIActivityIndicatorView *indicator; } -(void)showWithStatusMessage:(NSString*)msg; -(void)hide; @end

 

#import "CHStatusBar.h"    @implementation CHStatusBar     - (id) initWithFrame:(CGRect)frame{    if (self = [super initWithFrame:frame]) {    // 将窗体置于正确的位置和级别,就是比状态栏的级别稍高即可    // 否则该窗体会被标准状态栏遮住,相当于web开发的zoom                self.windowLevel = UIWindowLevelStatusBar + 1.0f;    // 使窗体的框架和状态栏框架一致                self.frame = [UIApplication sharedApplication].statusBarFrame;    // 创建一个灰色图片背景,使他视觉上还是一个标准状态栏的感觉                UIImageView* backgroundImageView = [[UIImageView alloc] initWithFrame:self.frame];                backgroundImageView.image = [[UIImage imageNamed:@"statusbar_background.png"] stretchableImageWithLeftCapWidth:2 topCapHeight:0];                [self addSubview:backgroundImageView];                [backgroundImageView release];    //创建一个progress    indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];                indicator.frame = (CGRect) {                    .origin.x = 2.0f,                     .origin.y = 3.0f,                     .size.width = self.frame.size.height - 6,                     .size.height = self.frame.size.height - 6    };    indicator.hidesWhenStopped = YES;    [self addSubview:indicator];    //文字信息,用于和用户进行交互,最好能提示用户当前是什么操作                lblStatus = [[UILabel alloc] initWithFrame:(CGRect){.origin.x = self.frame.size.height, .origin.y = 0.0f, .size.width = 200.0f, .size.height = self.frame.size.height}];                lblStatus.backgroundColor = [UIColor clearColor];                lblStatus.textColor = [UIColor blackColor];                lblStatus.font = [UIFont boldSystemFontOfSize:10.0f];                [self addSubview:lblStatus];                    }    return self;    }    - (void) showWithStatusMessage:(NSString*) msg {    if (!msg) return;            lblStatus.text = msg;            [indicator startAnimating];            self.hidden = NO;    }    - (void) hide {            [indicator stopAnimating];            self.hidden = YES;     }     - (void) dealloc {            [lblStatus release];            [indicator release];            [super dealloc];    }    @end

自定义状态栏就搞定了。

转载于:https://www.cnblogs.com/pengyingh/articles/2389168.html

你可能感兴趣的文章
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
mysql-python模块编译问题解决
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
【Linux】linux经常使用基本命令
查看>>
Java 内存区域和GC机制
查看>>
更新代码和工具,组织起来,提供所有博文(C++,2014.09)
查看>>
HTML模块化:使用HTML5 Boilerplate模板
查看>>
登记申请汇总
查看>>
Google最新截屏案例详解
查看>>
2015第31周一
查看>>
2015第31周日
查看>>
在使用EF开发时候,遇到 using 语句中使用的类型必须可隐式转换为“System.IDisposable“ 这个问题。...
查看>>
Oracle 如何提交手册Cluster Table事务
查看>>
BeagleBone Black第八课板:建立Eclipse编程环境
查看>>
在服务器上用Fiddler抓取HTTPS流量
查看>>
文件类似的推理 -- 超级本征值(super feature)
查看>>
【XCode7+iOS9】http网路连接请求、MKPinAnnotationView自定义图片和BitCode相关错误--备用...
查看>>
各大公司容器云的技术栈对比
查看>>
记一次eclipse无法启动的排查过程
查看>>