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就不一一介紹了,