? ? ? ?前面章節(jié)介紹了Xcode的基本內容,這節(jié)我們以一個簡單的實例介紹下與用戶的交互,本節(jié)將編寫一個稍微簡單的應用(看似簡單,但本章知識點是相當多的),它由兩個按鈕(UIButton)和一個文本框(UILabel)構成如圖1-4-1,當點擊按鈕文本會發(fā)生相應的變化.
1.4.1 創(chuàng)建項目
? ? ? ? ? ? 現(xiàn)在開始創(chuàng)建工程名為"1.4-Button And Label"的實例工程,我們選擇的模板是1.1章節(jié)所提到的Single View Application(單視圖應用程序),對相應參數(shù)進行設置如圖1-4-2, 本節(jié)我們要使用自動布局來創(chuàng)建一個可以在所有iOS設備上運行的應用程序,所以要在Devices下拉菜單中選擇Universal.
點擊Next,Xcode會提示你選擇項目的保存位置.按下Create之后項目就創(chuàng)建完成了.
1.4.2 視圖控制器(View Controller.swift)和應用代理方法(AppDelegate.swift)
終于要開始編寫代碼了,在編寫之前我們先看看已經(jīng)創(chuàng)建好的文件.如圖1-4-3
"1.4-Button And Label"文件夾包含了.swift的兩個文件/兩個storyboard文件/一個.xcassets文件(存放應用程序所需要的全部圖片)和一個Info.plist文件(它包含了應用程序的重要信息,例如程序名稱,bundle id,對運行的設備規(guī)格是否有要求,等等)
視圖控制器(View Controller.swift):負責管理應用程序的視圖,這個類是一個視圖控制器,點擊ViewController.swift,查看文件內容如圖1-4-4
ViewController是UIViewController的子類,UIviewController是一個通用控制器,是UIKit的一部分,通過繼承這個類,可以獲得大量的功能.
應用程序代理(AppDelegate.swift):是整個APP的事件代理類,是負責為其他對象處理特定任務的對象,在應用程序執(zhí)行過程中的某些特定時間點UIApplication調用特定的代理方法,例如:如果需要在程序退出時觸發(fā)一段代碼,可以在應用程序代理實現(xiàn)applicationTerminate方法,在這個方法內編寫想要的代碼即可.如圖1-4-5各個方法會在什么時候被調用.
1.4.3 添加控件到視圖并進行自動布局
我們了解了視圖控制器(View Controller.swift)和應用代理方法(AppDelegate.swift)之后,就開始將兩個按鈕和一個文本框加入到view中去.如圖1-4-6
我們雙擊拖進視圖的控件,就可以修改默認的文字.好了,我們可以運行下程序(快捷鍵為command + R),運行結果如圖1-4-7
? ? ? ?我們看到"右邊按鈕"消失了,只有"左邊按鈕"是正確的,這個時候不要擔心,我們還要進行下一步操作,就是自動布局.讓我們的程序在任何設備上可以正常顯示.
? ? ? ?在本實例中我們想達到如下效果:
? ? ? ? A.文本框應該水平居中,并且位于屏幕頂端的下方
? ? ? ? B.左邊按鈕應該垂直居中并且靠近屏幕左側
? ? ? ? C.右邊按鈕應該垂直居中并且靠近屏幕右側
每個要求都包含兩條約束:一條是水平約束,另一條是垂直約束.如果我們對這三個控件采用這些約束,自動布局就能在任意屏幕上保持視圖處于正確的位置,下面首先對左邊按鈕進行約束如圖1-4-8和圖1-4-9
這樣左邊的按鈕就約束好了.下面進行右邊按鈕的約束.如圖1-4-10和圖1-4-11
這樣右邊按鈕自動布局也OK,下面還有文本框的約束如圖1-4-12和圖1-4-13
OK,大功告成,我們command + R運行下:如圖1-4-14和1-4-15
OK,自動布局就這樣愉快的解決了,當然在Ipad運行也是OK的,因為我們已經(jīng)做好了適配.
下面簡單的介紹下在布局中Align(對齊)/Pin(固定)/Resolve Auto Layout Issues(解決自動布局問題)
Align(對齊):可以將你選中的視圖與另一個視圖對齊.如果現(xiàn)在點擊這個按鈕,將會看到一個包含多個選項的懸浮框.其中一個Horizontal Center in Container(容器中水平居中),上面已經(jīng)使用了這個約束.
Pin(固定):點擊按鈕會彈出一個面板,通過上面的控件可以設定某個視圖與另一個視圖的相對位置并且使用尺寸約束,以上的例子當中就設定了左右按鈕分別有視圖的左邊和右邊距離.
Resolve Auto Layout Issues(解決自動布局問題):按鈕可以糾正布局問題,可以推測遺漏了那些約束并補上,以及調整視圖在運行時的布局,如果你在上面的例子中遇到警告,就可以用Update Frames來改變控件在視圖中的準確位置.
1.4.4 布局預覽功能
?想要看適配后的效果,我們必須要運行到每一個模擬器上嗎,不是的.Xcode為我們提供了強大的預覽功能,可以選擇不同設備同時預覽,下面將介紹預覽的位置,以及怎樣添加不同設備到預覽中去.
1.4.5 添加按鈕的事件/文本框的屬性和編輯邏輯代碼
以上小節(jié)已經(jīng)完成了控件的添加以及自動布局適配,下面我們就開始編寫代碼了.
第一步:先將視圖中的按鈕添加方法到ViewController.swift中,并將文本框添加屬性到ViewController中.如圖:1-4-20
第二步:進行代碼邏輯的編寫.如圖:1-4-24
選中按鈕,按住Ctrl鍵并用鼠標左鍵拖出一條線到ViewController,主要按鈕的Connection需要改為Action并把方法名命名為btnClick,如圖1-4-21
右邊按鈕就直接把它拖到剛生成的方法中即可如圖1-4-22
添加文本屬性到ViewController.swift中如圖1-4-23
最后一步就是代碼的邏輯操作:如圖1-4-24
到這里就可以運行下程序就大功告成了,不妨點擊下兩個按鈕觀察文本框的變化吧,其中sender.titleForState(.Normal) 就是獲取兩個按鈕在正常狀態(tài)下的文本信息.
?歡迎加入Swift QQ交流群:513653400