非常感謝大家來繼續(xù)閱讀第三篇(也是終篇)關(guān)于簡單的Mac開發(fā)入門的上手系列文章,本篇中我們來討論怎樣細化App和更好的交互體驗,通過這些历极,你完全可以構(gòu)建自己喜歡的Mac 上的應(yīng)用
我們之前的工程存在哪些問題?
我們的工程運行后,你可以正常的顯示一個scary bug 列表操作窗口砖茸,并且可以進行刪除,添加以及修改這些數(shù)據(jù)殴穴,它功能完整凉夯,但是它的用戶體驗并不理想货葬。
比如,你調(diào)整窗口的大芯⒐弧(可以把窗口拖大一些震桶,如下圖),窗口內(nèi)控件的尺寸征绎,并沒有變化蹲姐,而且控件之間也沒有布局整齊,這是的它們看起有點難看人柿,乃至看專業(yè)柴墩;
再或者你把窗口縮小(如下圖)凫岖,一部分需要顯示的內(nèi)容已經(jīng)無法看見了江咳,因此我們需要明顯的設(shè)置一個窗口的最小幅度,這樣我們的應(yīng)用才可以正常使用
好吧哥放,讓我們來動手改進這些問題~
1 ?設(shè)置窗口的最小尺寸
1.1 先選中MasterViewController.xib歼指,重新調(diào)整view 的尺寸和排列內(nèi)部的各個控件,(以你喜歡的方式)讓控件看起來更協(xié)調(diào)甥雕,而且能夠全部顯示东臀,它可能看起來像下面這樣樣子:
1.2 從控件庫中,拖一條豎直的線到view 中犀农,把它放在table view 和詳情視圖直接的空白處(居中)
1.3 點選size inspector選項惰赋,記下view的size,在我們的示例工程中呵哨,view的尺寸是471 * 357
1.4 選擇mainMenu.xib,然后選擇window赁濒,根據(jù)上一步我們記下的view 的窗口size來設(shè)置window的最小尺寸:
1.5 編譯運行工程,試試調(diào)整運行應(yīng)用的窗口孟害,你會發(fā)現(xiàn)我們再也不能把窗口變得比我們設(shè)置好的最小值再小了拒炎,這樣我們的需要展示的界面就會一直顯示完整
好了,接下來我們進一步的調(diào)整窗口適配挨务,目前我們的window中击你,主要分為兩部分:列表 (豎直線左側(cè))和 列表詳情展示(豎直線右側(cè)),當window尺寸變化時谎柄,這兩部分的適配要求是不同的丁侄,我們先來設(shè)置table view :當窗口高度增加的時候,我們希望table view的高度也隨之增加朝巫,但當窗口寬度增加的時候鸿摇,我們希望table view的寬度不變(固定寬度)
1.6 設(shè)置table view 的窗口適配,在MasterViewController.xib中劈猿,選中table view 后拙吉,切換到size inspect屬性頁潮孽,修改autosizing設(shè)置
設(shè)置完成后,運行應(yīng)用筷黔,你會發(fā)現(xiàn)當我們改變窗口大小時往史,table view 的高度會隨窗口變化,但寬度是固定不變的佛舱,這正是我們需要的效果
* 如果你發(fā)現(xiàn)table view 的高度并沒有你預(yù)料中的跟隨窗口高度變化椎例,請確認你的view 設(shè)置是否正確(如下圖:)
1.7 使用同樣的方法,我們設(shè)置豎直分割線
1.8 設(shè)置+按鈕和-按鈕:按鈕大小不變名眉,但位置始終位于窗口的底部(與窗口底部的距離固定)
運行程序粟矿,看一下效果^_^
1.9 設(shè)置詳情部分的控件,參考下圖:
運行工程撒犀,我們可以看到所有的控件都會在窗口大小改變的時候會相應(yīng)的調(diào)整合適的尺寸或位置福压,這樣看起來比我們之前沒有設(shè)置窗口適配要美觀一些了,當然或舞,若是覺得窗口過大導(dǎo)致app看起來不是那么好看荆姆,我們也可以設(shè)置運行窗口的最大尺寸(與設(shè)置最小尺寸操作相同),示例如下圖
我們這里設(shè)置都是通過autosizing 進行窗口適配的映凳,這既方便又直觀胆筒,但是如果想要更多和更復(fù)雜的控件適配和窗口適配,更推薦使用Auto Layout(與iOS 中使用Auto Layout一樣)诈豌,關(guān)于如何詳細使用Auto Layout已經(jīng)超出本篇內(nèi)容仆救,有興趣的同學(xué)可以自行參考iOS中的操作體驗一下。
現(xiàn)在我們的Mac app 已經(jīng)能夠很好的適應(yīng)窗口變化矫渔,這樣的UI界面看起來比之前顯得專業(yè)和美觀了彤蔽,那么,還有什么其他要改進的來增強用戶體驗么庙洼?當然還有一些小細節(jié)需要處理顿痪,并不是太多。比如:
當編譯和運行后油够,如果我們沒有選中table view中的任何行蚁袭,點擊-按鈕(刪除行)或者Change Picture按鈕,應(yīng)用沒有任何反應(yīng)石咬,為了用戶體驗更好撕阎,我們需要在table view 沒有選中任何行的時候,禁止使用一些控件(-按鈕碌补,Change Picture按鈕以及text field 和rating view)虏束,如果table view 有選中的時候棉饶,再使得這些控件可以交互。
1.10 設(shè)置控件的enable默認屬性
同樣的方式镇匀,需要設(shè)置Change Picture按鈕和text field照藻,為了能夠使用這些控件,我們需要在view controller中為它們添加屬性
設(shè)置Change Picture按鈕步驟同上汗侵,命名changePictureButton屬性幸缕,并在MasterViewController.m中的tableViewSelectionDidChange:實現(xiàn)如下代碼
最后一步,我們還需要設(shè)置EDStarRating控件晰韵,由于它是custom view发乔,因此不能在Interface Builder中設(shè)置enble屬性,我們需要使用代碼在viewDidLoad中實現(xiàn)默認禁用雪猪,注意栏尚,針對EDStarRating控件,我們設(shè)置的是editable這個值只恨,而不是enable
編譯運行后译仗,默認這些控件是不能使用的,當你選中一行后官觅,它們有可以正常使用了纵菌。你也可以嘗試讓整個詳情展示的部分默認隱藏,當選中table view 一行后休涤,再顯示詳情視圖部分咱圆,這個功能留給同學(xué)們自己練習(xí)吧
上手Mac 開發(fā)的所有代碼都可以從github 下載demo code。你可以嘗試各種不同的控件或者在工程中添加不同的功能功氨,例如保存一個用戶選中的數(shù)據(jù)到文件中序苏,使用 ?NSSavePanel詢問用戶需要保存的文件路徑,或者使用search field給用戶提供選中bug的列表
真心希望你喜歡這個上手Mac 開發(fā)的入門系列疑故,并且推薦同學(xué)們閱讀Apple’s Mac App Programming Guide文章獲得更多的幫助