iOS—UIWindow與UIView

一、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),檢測程序的各種事件(程序開始啟動,接收到觸摸等等)

應用程序代理:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容