如何經過經過純粹的代碼,而不依賴於Xcode的StoryBoard,來完成一個App?javascript
首先作些操做性的工做,具體過程是這樣的:java
Xcode會進入主要編輯界面。此時,咱們打開AppDelegate.swift文件而後覆蓋源代碼爲以下:swift
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window : UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow()
window!.rootViewController = UIViewController()
window!.rootViewController!.view.backgroundColor = .blue
window!.makeKeyAndVisible()
return true
}
}複製代碼
運行後發現手機(或者仿真器)滿屏的藍色背景就說明成功了。設計模式
一塊兒來看看代碼。xcode
咱們須要導入UIKit:app
import UIKit複製代碼
框架UIKit用來構造和管理用戶界面、響應用戶交互和系統事件。既然須要建立App,引入UIKit是第一件須要作的工做。框架
接着查看AppDelegate類。它實現協議UIApplicationDelegate,且必須被標記爲@UIApplicationMain,二者配合就設置了App的程序入口點。AppDelegate實現了此協議中規定的函數:函數
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 複製代碼
這樣,UIKit就會在完成App啓動調用此函數,從而App能夠再次實現本身的初始化邏輯。spa
在本案例中,咱們在啓動函數中建立了window實例,它是UIWindow的實例。代碼隨即把window屬性的rootViewController設置爲UIViewController的實例。設計
爲了可視化的看到咱們的工做成果,咱們設置UIViewController的背景色爲藍色,設置的方式就是把屬性view背景色設置爲藍色,此屬性是類UIView的實例。
這樣,咱們完成了最基本的一個UI界面。
window和view是構建UI的關鍵構造塊,所以有必要澄清下概念。
每一個應用都有一個window,這個window並無任何外觀形象,每一個view都是被window包含在內的,事件處理也是首先路由到相應的window對象而後被導向到對應的視圖。
View定義了一個屏幕上的矩形區域,而且管理此區域的內容和用戶交互。window經過一個rootViewController的屬性view開始關聯,而後在此view內能夠經過addSubView加入更多的子視圖來完成UI的構建。
隨後咱們會接觸更多的view類型,實際上按鈕(UIButton)、標籤(UILabel)等能夠看到和交互的控件都是視圖的子類,View的使用時很是普遍的。
可能不少人會以爲AppDelegate這個名字過於冗長。爲此咱們得了解一個叫作Delegate的設計模式。Delegate是一個簡單而強大的設計模式,可讓其中一個對象委託一部分功能給另一個對象。作法就是發起對象持有委託對象的實例,並在適當的時間發起消息給委託對象,告訴委託對象將要發生的事件或者已經發生的事件。委託對象能夠更新用戶界面或者更新本身的狀態做爲響應。
在此案例中,關於委託牽涉到了兩個類包括UIApplication、AppDelegate,以及一個協議爲UIApplicationDelegate,UIApplication委託事件給AppDelegate,這裏的委託事件就是:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool複製代碼
以便讓在UIApplicationDelegate的對象能夠完成本身的初始化代碼。UIApplication和UIApplicationDelegate之間能夠創建一個協議,此協議規定二者之間能夠委託的具體內容,此協議就是UIApplicationDelegate規定的,能夠經過手冊瞭解此協議的更多資料。
這樣,咱們瞭解到了建造一個App涉及到的最少的類:UIApplication、UIApplicationDelegate、UIWindow、UIViewController,以及UIKit大量使用的委託設計模式,將來的文字將會以此爲墊腳石。