方法一:利用私有API添加新圖標
直接上代碼:在具體視圖控制器中重寫addStatusBarImageNamed:removeOnExit:方法
- (void) addStatusBarImageNamed:(NSString*)image removeOnExit: (BOOL) remove { if(_statusbarimage!=nil && _responds) { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"statusBarEnabled"] integerValue] == 1) [self removeStatusBarImageNamed:_statusbarimage]; statusbarimage=image; } if (_responds) { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"statusBarEnabled"] integerValue] == 1) [super addStatusBarImageNamed:image removeOnExit: remove]; } }
方法二:用新的UIWindow覆蓋原來的狀態欄
裝載自:http://b.imi.im/?p=374
首先繼承UIWindow,及init的方法,關鍵語句self.windowLevel = UIWindowLevelAlert;
- (id)init { CGRect f = [[UIScreen mainScreen] bounds]; //獲取屏幕區
CGRect s = [[UIApplication sharedApplication] statusBarFrame]; //獲取狀態欄框架區
self = [super initWithFrame:CGRectMake(0,0,f.size.width, s.size.height)]; if(self != nil) { self.windowLevel = UIWindowLevelAlert; self.backgroundColor = [UIColor clearColor]; [self makeKeyAndVisible]; } return self; }