一、UIWindow
1、什么是UIWindow
管理和協調應用程序的顯示。
UIWindow類是UIView的子類,可以看作是特殊的UIView(UIView之后介紹)。
一般應用程序只有一個UIWindow對象。
二、UIWidow對象有兩種方式創建:
1、自動創建UIWindow對象
先執行Main函數,執行UIApplicationMain()創建代理
看項目配置文件info.plist里面的StoryBoard的name
根據這個name找到對應的StoryBoard,加載StoryBoard
在加載的時候創建一個window。
2、代碼創建UIWindow對象
// 創建UIWindow對象
// [UIScreen mainScreen].bounds是屏幕大小
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 給window設置背景顏色(白色)
self.window.backgroundColor = [UIColor whiteColor];
// 使window顯示
[self.window makeKeyAndVisible];
// 創建一個視圖控制器
UIViewController *VC = [[UIViewController alloc] init];
// 給Window指定根視圖控制器
self.window.rootViewController = VC;
二、UIView
1、什么是UIView
UIView表示屏幕上的一塊矩形區域。
它在App中占有絕對重要的地位。
因為iOS中幾乎所有可視化控件都是UIView的子類。
負責渲染區域的內容
并且響應該區域內發生的觸摸事件。
2、UIView功能
管理矩形區域里的內容
處理矩形區域中的事件
子視圖的管理
實現UIView動畫
UIView作為父類,子類也具有這些功能
3、創建UIView
// 開辟空間創建UIView對象
// 設置frame確定UIView對象的位置以及大小
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
// 設置UIView對象的屬性:設置背景顏色
view.backgroundColor = [UIColor redColor];
// 將創建好的UIView對象添加到Window上顯示
[self.window addSubview:view];
4、frame
frame是UIView的重要屬性,是我們用于視圖布局的關鍵。
它決定了視圖的大小和位置。
frame是CGRect類型。
frame是基于它父視圖的坐標系而言的。
5、UIView常用屬性
6、添加視圖
7、應用程序的啟動流程
main函數:
任何一個程序,無論是基于Mac OS還是iOS,程序都是從main.m文件的main函數開始執行的。
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
UIApplicationMain
UIApplicationMain在程序入口函數main函數中調用,主要實現了3個功能:
1.創建應用程序(UIApplication)實例
2.創建應用程序代理(AppDelegate)實例
3.建立事件循環(runloop:死循環,不斷檢測程序運行狀態,是否被觸摸、晃動等)
UIApplicationMain參數
nt UIApplicationMain (
int argc,
char *argv[],
NSString *principalClassName,
NSString *delegateClassName
);
1、principalClassName:應用程序對象的類名(UIApplication或其子類)
2、delegateClassName:應用程序delegate的類名。(任何接受了UIApplicationDelegate的類)
UIApplicationMain根據上述兩個類名創建應用程序實例、應用程序代理實例。然后建立事件循環(runloop),檢測程序的各種事件(程序開始啟動,接收到觸摸等等)
應用程序代理: