iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
自我挑戰組

iOS 新手開發的大小事系列 第 18

Day 18: 使用 UIKit 開發 App

  • 分享至 

  • xImage
  •  

前言

在學習 iOS 開發的過程中,先熟悉 Swift 語言是必須的,再來是了解 UIKit 的使用,之前的過程嘗試開發過一些簡單的 App,但對整個架構並沒有很深刻的了解,剛好藉由鐵人賽,來加深對 App 基礎架構的了解,也在應用 UIKit 對各物件的使用有更進一步的認識,不過 UIKit 所包含物件不少,想說挑一些比較常用,或是還沒用過想試玩看看的來做介紹。


概觀

UIKit 框架提供了構建用於 iOS 和 tvOS 的應用程序 (App) 所需的核心物件。可以使用這些物件在屏幕上顯示內容,對該內容進行相互作用以及管理與系統的相互作用。應用程序依賴於 UIKit 的基本行為,而 UIKit 提供了多種方式來自定義行為以符合特定需求。

Xcode 將專案 (Project) 模板作為創建的每個應用程序的起點。例如,下圖顯示了使用 Xcode 中的單視圖應用程序模板創建的應用程序的結構。模板項目提供了最小的用戶界面,因此可以立即構建和運行項目,並在設備或模擬器中查看結果。


上圖:開啟一個新專案的 iOS App 單一畫面的結構
(補:此畫面為 Xcode 10 版本,Xcode 11 結構有所改變)

在構建應用程序時,Xcode 會編譯源文件 (source files) 並為專案創建一個應用程序包 (app bundle)。應用程序包是一個結構化目錄,其中包含與該應用程序關聯的程式碼和資源。資源包括支持代碼的圖像資產,Storybord 文件,字串文件和應用程序元數據 (metadata)。應用程序包的結構很重要,但是 Xcode 知道資源需要去往何處,因此暫時不必擔心。


必需資源 (Required Resources)

每個 UIKit 應用都必須具有以下資源:

  • App icons
  • Launch screen storyboard

系統會在主屏幕、設置中以及需要將某應用程序與其他應用程序區分開的任何位置顯示應用程序圖標。因為它在多個地方和多個設備上使用,所以在 Xcode 專案中的 AppIcon 圖片資產中提供了多個版本的應用程序圖標。應用程序圖標應與眾不同,以幫助用戶在主屏幕上快速識別應用程序。但是,可以更改圖標的詳細信息以適應必須提供的不同圖像尺寸。

LaunchScreen.storyboard 文件包含應用程序的初始用戶界面,它可以是初始屏幕或實際界面的簡化版本。當用戶點擊應用的圖標時,系統會立即顯示您的啟動屏幕,讓用戶知道應用程式正在啟動。啟動屏幕還會在初始化應用程序時為其提供封面。應用程式就緒後,系統會隱藏啟動屏幕並顯示應用的實際界面。


必需的應用元數據 (Required App Metadata)

系統從應用程序包中的訊息屬性列表(Info.plist)文件中獲取有關應用程序配置和功能的信息。Xcode 為每個新專案模板提供了該文件的預配置版本,但是可能需要在某個時候修改此文件。例如,如果應用程序依賴於特定的硬體或使用特定的系統框架,則可能需要將與此功能相關的訊息加入到此文件中。

可以對 Info.plist 文件進行的一種常見修改是宣告應用對硬體和軟體要求。這些要求是與系統交流應用程序需要運行的方式。例如,導航應用可能需要 GPS 硬體的存在才能提供轉彎路線。App Store 阻止將應用程序安裝在不符合應用程序要求的設備上。


上圖:宣告應用程式對硬體和軟體的要求


UIKit 應用的程式碼結構 (Code Structure of a UIKit App)

UIKit 提供了應用程序的許多核心物件,包括那些與系統作用、運行應用程序主事件循環以及在屏幕上顯示內容的物件。大多數可以直接使用這些物件,也可以進行少量修改。知道要修改哪些物件以及何時修改它們,對於實現應用程序非常重要。

UIKit 應用程序的結構基於「模型-視圖-控制器」(MVC)設計模式,其中按物件劃分用途。模型 (Model) 物件管理應用程序的數據和業務邏輯。視圖 (View) 物件提供了數據的可視化表示。控制器(Contorller) 物件為模型和視圖對象之間的橋樑,並在適當的時間在它們之間交換數據。

下圖表示 UIKit 應用程序的相當典型的結構。我們提供代表應用程序數據結構的模型物件。UIKit 提供了大多數視圖物件,儘管可以根據需要為數據定義自定義視圖。協調數據物件和 UIKit 視圖之間的數據交換是視圖控制器和應用程序委任物件。


圖:核心應用程式物件

UIKit 和 Foundation 框架提供了許多用於定義應用程序模型物件的基本型別。UIKit 提供了一個 UIDocument 物件,用來組織屬於 disk-based 文件中的數據結構。Foundation 框架定義了代表字串、數字、數組和其他數據型別的基本物件。Swift 標準庫提供了許多在 Foundation 框架中可用的相同型別。UIKit 提供了控制器中的大多數物件,並提供了應用程序的視圖層。具體來說,UIKit 定義了類 UIView ,該類通常負責在屏幕上顯示內容。 (可以使用 Metal 和其他系統框架將內容直接呈現到屏幕上。)UIApplication 物件運行應用程序的主事件循環並管理應用程序的整個生命週期。


上一篇
Day 17: 協定 (Protocol) -2
下一篇
Day 19: [UIKit] UITextField 介紹
系列文
iOS 新手開發的大小事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言