用Swift開發macOS程序, 四、界面設計
到這裡,我們才開始真正的學習macOS程序開發。
macOS程序是桌面應用程序,幸運的是這類程序我們見的用的太多,所以能讓我們容易地去理解它。桌面應用程序分兩個部分:即界面層和邏輯層。邏輯層又分兩部分,業務邏輯層與數據邏輯層。其中邏輯層的實現,大部分可以依賴我們前面所學的Swift知識,那界面層呢?只好現在從頭開始學了。程序界面的作用,無外乎是提供了一種人機交互方式。所以界面層的實現也可以分兩部分:首先是頁面布局的設計,即我們所看到的;其次是功能的應用,即我們所操作的。Xcode是一個功能強大且易於使用的編輯器。它提供了兩種方式用來處理界面層:Storyboard與Swift,Storyboard能讓我們做到所見即所得,同時能與Swift合用,使得開發變得很輕鬆。所以,大約來說,前者簡單後者有效。
恭喜你,從本章開始,你可以看到具體的運行程序了。每一次程序的成功運行,是我們再一次在軍事演習上的勝利,再一次人生的在進步。好吧,讓辛苦留住嘴角的微笑,讓努力帶走額頭的山川,我們開始吧。
請留意,此後章節有大量的圖片,請留心你的流量,我可沒有錢陪給你。還有,從這一章開始,不再區分有無經驗,只概述與正文兩部分,你需要查看概述確定你有無需要閱讀本章內容。
????? 概述 ?????
我們將使用Storyboard、Swift相互協作的方式來設計界面。Xcode編輯器會為我們提供了大量的組件,用來設計界面。也就是說,在大多數情況下,我們不需要自己來設計組件就能完成程序開發。這些組件是例如按鈕,文本輸入框,表格這一類的東西。每個組件只跟定位、數據、樣式、事件有關,當你了解了單個組件,你就大約學會了界面設計:
- 定位,即組件在頁面中的位置。可使用相對或絕對數據來確定其位置,並能為其添加約束等限制。
- 樣式,即組件最終呈現的模樣。有兩種方式確定其樣式:其一,為屬性賦值;其二,通過實現委託的方法進而確定組件是如何顯示數據。
- 數據,即組件需要呈現的內容。有三種方式為組件提供數據:其一,為屬性賦值;其二,通過實現委託的方法來為其提供數據;其三,Cocoa數據綁定。
- 事件,即組件對事件的接收與處理。是通過實現委託方法來確定將要監聽和處理某操作。
下面我們將從上述的四個方面來學習如何設計程序界面。
????? 正文 ?????
一、建立一個名為「iWriter」的macOS工程。
在開始之前,我們需要建立一個macOS工程,就叫它:「iWriter」。
- 啟動Xcode,在「Welcome to Xcode」頁面,點擊左側第二項「Create a new Xcode project」。
- 在「Choose a template for your new project」頁面,選擇頂部菜單項「macOS」,選擇第一欄「Application」中第一項「Cocoa App」後,點擊「Next」。
- 在「Choose options for your new project」頁面,「Product Name」項填入「iWriter」,「Language」項選擇「Swift」,勾選其下的「Use Storyboards」,勾選最下的「Include Unit Tests」及「Include UI Tests」,然後點擊「Next」。注意:Team、Organization Name、Organization Identifier跟你的蘋果開發賬號有關,如有需要,請參考forgot2015的蘋果 iOS 開發者公司賬號申請流程。
- 在跳出的文件流覽框里,選擇工程存放的位置後,點擊「Creat」,創建完成了「iWrter」項目。
二、先了解一下Xcode界面:
有了macOS工程之後,我們還需要了解Xcode的自身的布局、各區名稱及其作用。這裡需要我們用一下心,因為以下章節都需用到,同時到了下一章,我們只提各區及按鈕的英文名,你需要知道我們講的是那個位置和該如何操作。如Size欄,就是Inspector Area(檢查區)的Size(尺寸)欄等。
- 界面的分區及功能按鈕,有圖參考:
- Run or Stop(運行、停止)按鈕,啟動或停止當前項目程序:
- 左,點擊,編譯並運行當前方案。可以理解為,為當前程序運行一個實例;
- 右,點擊,關閉正在運行的方案或程序,可以理解為,關閉當前程序的運行實例。
- Library(庫)按鈕,打開庫窗口:
- 編輯區為Swift時,顯示大括弧圖標,點擊跳出代碼庫窗口;
- 編輯區為Storyboard時,顯示方圓圖標,點擊顯示組件庫窗口。
- Editor Control(編輯區控制)按鈕,切換編輯區模式:
- 左,Standard Editor(基本編輯器),為Storyboard或Swift提供單一區域;
- 中,Assistant Editor(助理編輯器),為Storyboard或Swift提供雙區域,當Storyboard與Swift以左右分區顯示時,方便Storyboard組件關聯到Swift的ViewController中;
- 右,Version Editor(版本編輯器),為Swift提供前後兩個版本的代碼比較。
- Area Control(大區控制)按鈕,顯示或隱藏非編輯區域:
- 左,顯示或隱藏Navigator Area(導航區);
- 中,顯示或隱藏Debug Area(調試區);
- 右,顯示或隱藏Inspectors Area(檢查區)。
- Navigator Area(導航區),從左到右依次為:
- Project(項目)欄,為項目文件提供分群組導航;
- Source Control(代碼管理)欄,為代碼分支、標籤、遠程提供導航;
- Symbol(標識)欄,為代碼按屬性、方法提供導航;
- Find(查找)欄,為工程按字元串查找提供導航;
- Issue(問題)欄,為工程按編譯、運行的問題提供導航,區分警示(黃)與錯誤(紅);
- Test(測試)欄,為單元、界面測試提供導航;
- Debug(調試)欄,為調試時線程節點提供導航;
- Breakpoint(斷點)欄,為設置的所有斷點提供導航;
- Report(報告)欄,為每次編譯與運行的信息提供導航。
- Editor Area(編輯區),有Storyboard、Swift、Form等等編輯方式:
- 上,麵包屑(文件鏈)欄,可快速切換各級文件;
- 下,操作區,有Storyboard、Swift、Form編輯方式。
- Inspector Area(檢查區),後六項在Storyboard中選擇組件後激活,從左到右依次為:
- File(文件)欄,當前文件信息,可設置;
- Help(幫助)欄,為所選類提供幫助文檔;
- Identity(身份)欄,組件身份,在組件關聯後,可使用;
- Attribute(屬性)欄,當前組件或控制器屬性信息,可設置。
- Size(尺寸)欄,當前組件或控制器尺寸信息,可設置。
- Connection(關聯)欄,當前組件或控制器關聯到代碼中的屬性、事件等信息,可設置。
- Binding(綁定)欄,數據Cocoa綁定。
- Effect(效果)欄,當前組件或控制器的整體效果信息,可設置。
- Debug Area(調試區),調試時顯示運行中數據:
- 左,運行時,提供當前對象、屬性、變數值;
- 右,運行時,輸出運行錯誤。同時可通過po命令輸出指定對象、屬性、變數、方法的值。