你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS開發之自定義狀態條

IOS開發之自定義狀態條

編輯:IOS開發綜合

第一種方法:

-(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 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設置高點。其他代碼基本上都不解釋什麼,如果要特殊效果,可以自己添加。


  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved