你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> ios狀態欄操作

ios狀態欄操作

編輯:IOS開發綜合

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES; //顯示

[UIApplication sharedApplication].networkActivityIndicatorVisible = NO; //隱藏

 


讓狀態欄顯示網絡等待標志

 


狀態欄是可以通過UIApplication類提供的一些方法來修改的,比如完全去掉狀態欄或者修改風格,不過這些改變只是在你的程序內部,當你退出你的程序又會復原。

 

UIApplication *myApp = [UIapplication sharedApplication];

 

 

1.隱藏狀態欄


[myApp setStatusBarHidden:YES animated:YES];

 

 

記得隱藏狀態欄後的你的“桌面”就增加320×20的大小,所以最好是在任何window或者view創建之前隱藏它。


2.狀態欄風格


[myApp setStatusBarStyle: UIStatusbarStyleBlackOpaque]; 

typedef enum { 

 UIStatusBarStyleDefault, 

   UIStatusBarStyleBlackTranslucent, 

 UIStatusBarStyleBlackOpaque 

 } UIStatusBarStyle; 

3.狀態欄方向


[myApp setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];

typedef enum {

UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait, 

  //豎屏,垂直向上 

   UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown, 

//豎屏,垂直方向上下顛倒 

 UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight, 

//設備逆時針旋轉到橫屏模式 

 UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft 

   //設備順時針旋轉到橫屏模式 

  } UIInterfaceOrientation; 


有時候,需要在狀態欄上顯示一些自定義信息,比如新浪微博的官方iOS客戶端:告知用戶信息處於發送隊列、發送成功或者發送失敗。

 \


如上圖,通過在狀態欄顯示自定義信息,可以給用戶友好又不影響軟件使用的提示。

為此,我們顯得定義一個自定義狀態欄類,包含一個顯示信息的Label:

 

@interface CustomStatusBar : UIWindow 

    UILabel *_messageLabel; 

 
- (void)showStatusMessage:(NSString *)message; 
- (void)hide; 
 
@end 

 

 

接著,設置大小和系統狀態欄一致,背景為黑色:

 

 

self.frame = [UIApplication sharedApplication].statusBarFrame; 
self.backgroundColor = [UIColor blackColor];

 

 

到這裡,為了讓自定義的狀態欄可以讓用戶看到,還需要設置它的windowLevel。
在iOS中,windowLevel屬性決定了UIWindow的顯示層次。默認的windowLevel為UIWindowLevelNormal,即0.0。
系統定義了三個層次如下,具體可參考官方文檔:
[cpp]
const UIWindowLevel UIWindowLevelNormal; 
const UIWindowLevel UIWindowLevelAlert; 
const UIWindowLevel UIWindowLevelStatusBar; 
typedef CGFloat UIWindowLevel; 


為了能夠覆蓋系統默認的狀態欄,我們把自定義的狀態欄的windowLevel調高點:
[cpp]
self.windowLevel = UIWindowLevelStatusBar + 1.0f; 


最後,為顯示信息和隱藏添加一點無傷大雅的動畫:
[cpp]
- (void)showStatusMessage:(NSString *)message 

    self.hidden = NO; 
    self.alpha = 1.0f; 
    _messageLabel.text = @""; 
     
    CGSize totalSize = self.frame.size; 
    self.frame = (CGRect){ self.frame.origin, 0, totalSize.height }; 
     
    [UIView animateWithDuration:0.5f animations:^{ 
        self.frame = (CGRect){ self.frame.origin, totalSize }; 
    } completion:^(BOOL finished){ 
        _messageLabel.text = message; 
    }]; 

 
- (void)hide 

    self.alpha = 1.0f; 
     
    [UIView animateWithDuration:0.5f animations:^{ 
        self.alpha = 0.0f; 
    } completion:^(BOOL finished){ 
        _messageLabel.text = @""; 
        self.hidden = YES; 
    }];; 

 

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