第一种方法:
-(void)setRefreshWindow{
CGRect frame = CGRectMake(0.0, 0.0, 320.0, 20.0);
statusbarWindow = [[UIWindow alloc] initWithFrame:frame];
[statusbarWindow setBackgroundColor:[UIColor clearColor]];
[statusbarWindow setWindowLevel:UIWindowLevelStatusBar+1.0f];
// 添加自定义子视图
UIImageView *customView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 0, 120, 18)];
customView.image=[UIImage imageNamed:@"数据刷新栏.png"];
// UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 20)];
// // label.backgroundColor=[UIColor clearColor];
// label.text=@"数据正在刷新";
// [customView addSubview:label];
[statusbarWindow addSubview:customView];
[statusbarWindow makeKeyAndVisible];
}
第二种方法:
如果需要在状态栏显示自定义的消息时,就需要自定义状态栏。
代码如下:
XYCustomStatusBar.h
01
|
#import
<UIKit/UIKit.h>
|
03
|
@interface
XYCustomStatusBar : UIWindow{
|
05
|
UILabel
*_messageLabel;
|
08
|
-
( void )showStatusMessage:(NSString
*)message;
|
XYCustomStatusBar.m
01
|
#import
"XYCustomStatusBar.h"
|
03
|
@implementation
XYCustomStatusBar
|
07
|
[_messageLabel
release], _messageLabel = nil;
|
13
|
self.frame
= [UIApplication sharedApplication].statusBarFrame;
|
14
|
self.backgroundColor
= [UIColor blackColor];
|
15
|
self.windowLevel
= UIWindowLevelStatusBar + 1.0f;
|
17
|
_messageLabel
= [[UILabel alloc] initWithFrame:self.bounds];
|
18
|
[_messageLabel
setTextColor:[UIColor whiteColor]];
|
19
|
[_messageLabel
setTextAlignment:NSTextAlignmentRight];
|
20
|
[_messageLabel
setBackgroundColor:[UIColor clearColor]];
|
21
|
[self
addSubview:_messageLabel];
|
27
|
-
( void )showStatusMessage:(NSString
*)message{
|
30
|
_messageLabel.text
= @ "" ;
|
32
|
CGSize
totalSize = self.frame.size;
|
33
|
self.frame
= (CGRect){ self.frame.origin, 0, totalSize.height };
|
35
|
[UIView
animateWithDuration:0.5 animations:^{
|
36
|
self.frame
= (CGRect){self.frame.origin, totalSize };
|
37
|
}
completion:^( BOOL finished){
|
38
|
_messageLabel.text
= message;
|
47
|
[UIView
animateWithDuration:0.5f animations:^{
|
49
|
}
completion:^( BOOL finished){
|
50
|
_messageLabel.text
= @ "" ;
|
为了让自定义的状态栏可以让用户看到,设置了它的windowlevel,在ios中,windowlevel属性决定了UIWindow的显示层次,默认的windowlevel为UIWindowLevelNormal,即0.0 。为了能覆盖默认的状态栏,将windowlevel设置高点。其他代码基本上都不解释什么,如果要特殊效果,可以自己添加。
IOS开发之自定义状态条,布布扣,bubuko.com
IOS开发之自定义状态条