iOS UIWindow,UIApplication類中的屬性介紹

UIWindow:
1、在程序的開發中,用到UIWindow的地方並不多,很多時候只是在設置應用程序的根試圖控制器的時候會用到,比如在AppDelegate.h中使用:

// 程序一啓動就會到這個方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    return YES;
}

window是用來設置程序的窗口的,在iOS中,所有的界面都是展示在窗口上面的,所有window必須設置。
2、window的屬性以及方法
(1)keyWindow // 只讀屬性,用於判斷窗口是否是主窗口

(2)- (void)makeKeyWindow; // 設置成主窗口,有可能運行的效果窗口是黑色的,那是因爲窗口不可見,建議不使用這個方法。

(3)- (void)makeKeyAndVisible; // 設置成主窗口並可見,建議使用這個方法設置窗口。

(4)幾種座標轉換方法,可用來轉換座標系

- (CGPoint)convertPoint:(CGPoint)point toWindow:(nullable UIWindow *)window;    

- (CGPoint)convertPoint:(CGPoint)point fromWindow:(nullable UIWindow *)window; 

- (CGRect)convertRect:(CGRect)rect toWindow:(nullable UIWindow *)window;

- (CGRect)convertRect:(CGRect)rect fromWindow:(nullable UIWindow *)window;

5、 window的通知類型,在window的操作中,如果需要做操作,可以檢測window的通知,

UIKIT_EXTERN NSString *const UIWindowDidBecomeVisibleNotification; // window已經可見的通知
UIKIT_EXTERN NSString *const UIWindowDidBecomeHiddenNotification;  // window已經消失的通知
UIKIT_EXTERN NSString *const UIWindowDidBecomeKeyNotification;     // window成爲主窗口的通知
UIKIT_EXTERN NSString *const UIWindowDidResignKeyNotification;     // 註冊主窗口的通知

6、有按鍵盤操作的一些通知

UIKeyboardWillShowNotification // 鍵盤將要顯示的通知
UIKeyboardDidShowNotification // 鍵盤已經顯示的通知
UIKeyboardWillHideNotification // 鍵盤將要消失的通知
UIKeyboardDidHideNotification // 鍵盤已經消失的通知

UIKeyboardWillChangeFrameNotification // 鍵盤frame將要改變的通知
UIKeyboardDidChangeFrameNotification // 鍵盤frame已經改變的通知

7、如果檢測了鍵盤的動作通知,可以就可以取的鍵盤的一些數據,有關鍵盤取數據的key如下(檢測了鍵盤通知的時候,通知會附加一個userInfo字典屬性,裏面存儲有關鍵盤的信息),

UIKeyboardFrameBeginUserInfoKey // 鍵盤開始變化的時候的值
UIKeyboardFrameEndUserInfoKey // 鍵盤結束變化的時候的值
UIKeyboardAnimationDurationUserInfoKey // 鍵盤變化的時間戳
UIKeyboardAnimationCurveUserInfoKey

/*
// 如果檢測的是UIKeyboardFrameBeginUserInfoKey或者UIKeyboardFrameEndUserInfoKey通知,會用到下面的key

UIKeyboardCenterBeginUserInfoKey
UIKeyboardCenterEndUserInfoKey
UIKeyboardBoundsUserInfoKey

*/

UIApplication:

1、調用系統打電話,發短信,發郵件,

- (BOOL)canOpenURL:(NSURL *)url // 用於判斷是否可以用來打開url
- (BOOL)openURL:(NSURL*)url // 打開url,比如打電話,發短信,發郵件

2、keyWindow // 只讀屬性,用來獲取程序的主窗口,在切換根控制器的時候經常用到(比如登錄界面在登錄成功之後,需要切換到成切的其它控制器)

[UIApplication sharedApplication].keyWindow.rootViewController = [UIViewController new];

3、networkActivityIndicatorVisible // Bool值,默認是NO,用來設置聯網狀態的刷新提示(就是狀態欄上的那個菊花,在請求數據的時候,會轉圈的那個菊花),設置成YES,就不會出現了,一般不會注意這個問題。
4、statusBarStyle // UIStatusBarStyle 枚舉,就是手機屏幕最上面的狀態欄的樣式,白色或者黑色,

UIStatusBarStyleDefault // 默認是黑色的,                                    UIStatusBarStyleLightContent // 其實是白色的

5、statusBarOrientation // 設備的旋轉樣式

UIInterfaceOrientationUnknown            = UIDeviceOrientationUnknown,
    UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
    UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
    UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft

6、statusBarFrame // 狀態欄的frame ,如果狀態欄隱藏的話,返回CGRectZero
7、applicationIconBadgeNumber // 桌面應用圖標右上角的通知數字,=0的話直接隱藏,但是必須在設置之前註冊通知
8、applicationSupportsShakeToEdit // 支持搖一搖
9、applicationState // 判斷程序的狀態,

UIApplicationStateActive, // 活躍狀態,前臺
UIApplicationStateInactive,  // 非活躍狀態
UIApplicationStateBackground // 後臺狀態

10、- (void)registerForRemoteNotifications // 註冊遠程通知
- (void)scheduleLocalNotification:(UILocalNotification *)notification // 發送本地通知
- - (void)cancelAllLocalNotifications // 取消所有本地通知
- scheduledLocalNotifications // 獲取所有的本地通知
- - (void)registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings // 註冊通知
11、proximitySensingEnabled // 是否開啓傳感器,默認NO,YES的話可以檢測手機附近物體的靠近

12、上面的基本上就是常用的一些數據,還有一個通知和key就不一一介紹了,

發佈了44 篇原創文章 · 獲贊 16 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章