IOS开发之自定义状态条
来源:互联网 发布:linux如何退出切换用户 编辑:程序博客网 时间:2024/06/05 02:56
第一种方法:
-(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>
02
03
@interface XYCustomStatusBar : UIWindow{
04
05
UILabel *_messageLabel;
06
}
07
08
- (
void
)showStatusMessage:(NSString *)message;
09
10
- (
void
)hide;
11
12
@end
XYCustomStatusBar.m
01
#import "XYCustomStatusBar.h"
02
03
@implementation XYCustomStatusBar
04
05
- (
void
)dealloc{
06
[super dealloc];
07
[_messageLabel release], _messageLabel = nil;
08
}
09
10
- (id)init{
11
self = [super init];
12
if
(self) {
13
self.frame = [UIApplication sharedApplication].statusBarFrame;
14
self.backgroundColor = [UIColor blackColor];
15
self.windowLevel = UIWindowLevelStatusBar + 1.0f;
16
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];
22
}
23
24
return
self;
25
}
26
27
- (
void
)showStatusMessage:(NSString *)message{
28
self.hidden = NO;
29
self.alpha = 1.0f;
30
_messageLabel.text = @
""
;
31
32
CGSize totalSize = self.frame.size;
33
self.frame = (CGRect){ self.frame.origin, 0, totalSize.height };
34
35
[UIView animateWithDuration:0.5 animations:^{
36
self.frame = (CGRect){self.frame.origin, totalSize };
37
} completion:^(
BOOL
finished){
38
_messageLabel.text = message;
39
}];
40
41
}
42
43
44
- (
void
)hide{
45
self.alpha = 1.0f;
46
47
[UIView animateWithDuration:0.5f animations:^{
48
self.alpha = 0.0f;
49
} completion:^(
BOOL
finished){
50
_messageLabel.text = @
""
;
51
self.hidden = YES;
52
}];
53
}
54
55
@end
为了让自定义的状态栏可以让用户看到,设置了它的windowlevel,在ios中,windowlevel属性决定了UIWindow的显示层次,默认的windowlevel为UIWindowLevelNormal,即0.0 。为了能覆盖默认的状态栏,将windowlevel设置高点。其他代码基本上都不解释什么,如果要特殊效果,可以自己添加。
0 0
- IOS开发之自定义状态条
- 自定义控件开发之----自定义视图状态
- iOS状态条
- IOS开发之自定义UIActionSheet
- ios开发之自定义UITabBarController
- iOS开发之自定义View
- iOS开发之自定义pageControl
- iOS开发之自定义View
- iOS开发之自定义View
- IOS开发之自定义UIActionSheet
- iOS开发之自定义通知
- IOS开发之自定义键盘
- iOS开发之自定义NSOperation
- iOS开发之自定义手势
- iOS开发之自定义UITableView
- iOS开发之自定义AlertView
- iOS开发之自定义组件
- IOS开发之自定义键盘
- delegate的衍化过程
- 二 ABAP语法Demo
- java读取二进制文件传给nodejs保存
- 对部分REST API的理解
- android aapt使用小结
- IOS开发之自定义状态条
- Java 连接 Access
- UVA10645完全背包
- 基础总结篇之二:Activity的四种launchMode
- jade处理文本
- 网口-IP-MAC绑定办公环境上网方案
- HDU 1016Prime Ring Problem(dfs)
- Linux下获取帮助
- JRebel 热部署