【项目经验】iphone自定义状态栏

本文介绍如何在iOS应用中自定义状态栏,显示灰色背景并提供指示器和消息,用于提示用户耗时操作的状态,如网络请求或数据提交。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#import <Foundation/Foundation.h> //自定义状态栏,状态栏显示灰色背景并【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 自定义状态栏就搞定了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值