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

本文共 2439 字,大约阅读时间需要 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

自定义状态栏就搞定了。

转载地址:http://xthgx.baihongyu.com/

你可能感兴趣的文章
以交互方式使用exp/imp的演示
查看>>
Python对文件的操作(转)
查看>>
Codeforces Round #263 (Div. 2)
查看>>
软考概述
查看>>
程序猿打新总结 6月份 新股申购秘籍
查看>>
163源报错Hash Sum mismatch 解决方法
查看>>
使用ECMAscript5中的forEach函数遍历数组
查看>>
Linux之MySQL
查看>>
jekins 持续集成手记
查看>>
Android 为应用创建、删除桌面快捷方式
查看>>
Maven如何手动添加依赖的jar文件到本地Maven仓库
查看>>
Oracle安装部署,版本升级,应用补丁快速参考
查看>>
【Android】13.0 第13章 创建和访问SQLite数据库—本章示例主界面
查看>>
CentOS6.5安装Tab增强版:bash-completion
查看>>
2015华为机试——数字基root
查看>>
Java学习笔记(四):流程控制
查看>>
ios开发--第三方整理
查看>>
【JVM】JVM系列之内存模型(六)
查看>>
MySQL排序原理与案例分析
查看>>
RegexBuddy正则表达式工具
查看>>