給護照App增加更多功能~第七章練習(xí)Building More on the Passport App

本章練習(xí)我們繼續(xù)使用第五章和第六章的練習(xí)Passport App侈询,在本章練習(xí)中茫孔,Passport App會增加Auto Layout功能,App的界面會隨著不同的設(shè)備(iPhone痒玩、iPad)不同方向(橫屏愤估、豎屏)進行自適應(yīng)和自我調(diào)節(jié)(見圖7-18)。

圖7-18

Exercise: Building More on the Passport App | Page 201

打開Passport工程打洼,點擊Project Navigator中的Passport龄糊,顯示工程詳細信息。往下滑把Devices設(shè)置成Universal募疮,接著勾選Upside Down炫惩、Landscape Left、Landscape Right阿浓。然后打開Images.xcassets文件他嚷,選中AppIcon,敲擊鍵盤刪除鍵。接著在白色的sidebar點擊鼠標右鍵筋蓖,選擇New App Icon卸耘,一個全新的iPad和iPhone應(yīng)用圖標格子出現(xiàn)。然后打開圖標文件夾粘咖,把對應(yīng)的圖標拖動到對應(yīng)的格子中蚣抗。

模擬器選擇下拉菜單頂部工具欄Passport字樣的右邊。

下拉菜單中包括了所有當前模擬器可用的設(shè)備(見圖7-19)瓮下。選擇iPad Air翰铡,點擊Play按鈕。現(xiàn)在iOS模擬器啟動iPad Air樣式唱捣。

圖7-19

iPad Air的模擬器非常大两蟀,所以要調(diào)小一些,點擊模擬器震缭,然后頂部菜單選擇Window -> Scale -> 50%(見圖7-20)赂毯。iPad Air模擬器會調(diào)整成標準尺寸的50%。

圖7-20

Page 202 | Chapter 7: Devices and Auto Layout

Passport App在iPad上看起來并不好看拣宰。圖片的位置變化了党涕,然后labels也偏移了位置(見圖7-21)。這是因為當前的控件位置使用的是固定的寬高坐標巡社。

圖7-21

你需要把控件位置設(shè)置成Auto Layout膛堤。打開Main.storyboard文件,選擇File Inspector(見圖7-22)晌该,勾選Use Auto Layout肥荔,勾選Use Size Classes。點擊Enable Size Classes(見圖7-23)

圖7-22
圖7-23

Exercise: Building More on the Passport App | Page 203

Size classes用來調(diào)整不同設(shè)備下的布局朝群,現(xiàn)在我們可以使用Auto Layout了燕耿,要使用Auto Layout,首先我們要給控件增加約束(constraints)姜胖。打開Passport Scene誉帅。

Page 204 | Chapter 7: Devices and Auto Layout

借助輔助線把Image View放到界面的中間,然后把Image View往上移動直到上方出現(xiàn)一條水平的輔助線右莱。點擊Align按鈕蚜锨,選擇Horizontal Center in Container,然后點擊Add 1 Constraint慢蜓。接著點擊Pin按鈕亚再,上下左右四個方向選中上方豎線,值從下拉框中選擇Use Standard Value晨抡,選中Width和Height兩個選項针余,點擊Add 3 Constraints(見圖7-24)饲鄙。

圖7-24

把右側(cè)的三個Label放到Image View的右側(cè)下方,Label的右邊距和Image View的右邊距相同對齊圆雁,選中這三個右側(cè)Label忍级,點擊Align按鈕,勾選Trailing Edges選項伪朽,點擊Add Constraints轴咱。然后點擊Pin按鈕,勾選上方向豎線烈涮,選擇Use Standard Value朴肺,Update Frames選項下拉選擇Items of New Constraints,點擊Add Constraints(見圖7-25)坚洽。

圖7-25

Exercise: Building More on the Passport App | Page 205

把左側(cè)的三個Label放到Image View的左側(cè)下方戈稿,Label的左邊距和Image View的左邊距相同對齊,選中這三個左側(cè)Label讶舰,點擊Align按鈕鞍盗,勾選Leading Edges選項,點擊Add Constraints跳昼。然后點擊Pin按鈕般甲,勾選上方向豎線,選擇Use Standard Value鹅颊,Update Frames選項下拉選擇Items of New Constraints敷存,點擊Add Constraints(見圖7-26)。

圖7-26

Page 206 | Chapter 7: Devices and Auto Layout

選中按鈕堪伍,借助輔助線把按鈕放到水平居中的位置锚烦,放到Label的下方。點擊Align按鈕帝雇,勾選Horizontal Center in Container涮俄,點擊Add 1 Constraint,最后點擊Pin按鈕摊求,勾選上方向豎線,選擇Use Current Canvas Value刘离,點擊Add 1 Constraint(見圖7-27)室叉。

圖7-27

剛剛設(shè)置的這些約束會應(yīng)用到所有的size classes和layouts中。現(xiàn)在硫惕,我們要為某個size class設(shè)置單獨的約束了茧痕。點擊最下方的“Any,Any”,會出現(xiàn)一個小的格子框恼除,這里控制著當前我們編輯的是哪個size class踪旷,點擊格子框的右下角(見圖7-28)曼氛,這個size class是用來設(shè)計iPad的橫屏和豎屏。

圖7-28

Exercise: Building More on the Passport App | Page 207

選中Image View令野,一條藍色豎線出現(xiàn)在Image View的右側(cè)舀患,這時Image View的高度約束,雙擊這條約束气破,把值由225改為400聊浅,接著雙擊Image View下方的藍色豎線,這是寬度約束现使,雙擊低匙,把值由225改為400。Image View的大小已經(jīng)重新設(shè)定了碳锈,Label和Button會自動調(diào)整它們的位置(見圖7-29)顽冶。

圖7-29

Page 208 | Chapter 7: Devices and Auto Layout

想要預(yù)覽剛剛修改的約束效果,我們可以使用Previewer售碳,在打開Previewer之前强重,我們最好給窗口騰出一些屏幕空間來,隱藏Project Navigator和Inspector团滥,打開Assistant Editor竿屹,就是兩個圓圈相交的圖標,在Assistant Editor的工具欄中灸姊,點擊Automatic拱燃,會出現(xiàn)一個下拉菜單,選擇Preview -> Main.storyboard(Preview)(見圖7-30)力惯。

圖7-30

右側(cè)出現(xiàn)了一個4英寸iPhone的預(yù)覽圖碗誉,點擊左下角的加號,選擇iPad父晶,一個iPad的預(yù)覽效果就出現(xiàn)在Previewer中了(見圖7-31)∠保現(xiàn)在各個控件在iPad上的效果看起來好多了。點擊iPad preview下方的彎曲箭頭甲喝,就可以調(diào)整iPad的方向尝苇,雖然方向變化了,但是控件的位置還是放置正確埠胖,調(diào)整一下4英寸iPhone糠溜,方向變化后,界面看起來不太友好了直撤,各個控件的位置似乎并不合適非竿。

圖7-31

Exercise: Building More on the Passport App | Page 209

在最下方點擊“Regular,Regular”谋竖,然后點擊最上邊一行格子的中間的那個格子红柱,這時size class變成了“Any,Compact”(見圖7-32)承匣。這個size class是用來設(shè)計iPhone橫屏的效果,這時界面會調(diào)整方向锤悄,有些控件會無法出現(xiàn)在界面中韧骗。為了解決這個問題,我們需要從頂部菜單欄中點擊Edit -> Select All铁蹈,這樣所有的控件都選中了宽闲,把Image View拖到界面的最頂部,所有的控件都顯示出來了握牧。

圖7-32

Page 210 | Chapter 7: Devices and Auto Layout

這個size class需要全新的Layout(見圖7-33)容诬。點擊Resolve Auto Layout Issues按鈕,選擇最下邊的Clear Constraints沿腰,這樣就會清除這個size class下的所有約束條件览徒。接著把Image View放到屏幕的左上方,直到左邊和上方都出現(xiàn)了輔助線颂龙,選中Image View习蓬,點擊Pin按鈕,勾選上方方向豎線措嵌,選擇Use Standard Value躲叼,左側(cè)方向豎線,選擇Use Current Canvas Value企巢。勾選Width和Height選項枫慷,點擊Add Constraints,把Label和Button放到圖片右側(cè)上方浪规,直到上方出現(xiàn)了輔助線或听,以及Image View的右側(cè)也出現(xiàn)了輔助線,點擊Pin按鈕笋婿,上方方向豎線選擇Use Standard Value誉裆,左側(cè)方向豎線,選擇Use Current Canvas Value缸濒,點擊Add Constraints足丢。

圖7-33

所有的設(shè)置都已經(jīng)完成了,可以對App進行測試了庇配,模擬器選擇iPhone 5s斩跌,點擊Play按鈕(Command+R),選擇Hardware -> Rotate Right(Command+方向鍵)(見圖7-34)讨永,在iPad Air上運行也沒有問題(見圖7-35)

圖7-34
圖7-35

Exercise: Building More on the Passport App | Page 211

如果App沒有按照你想要的結(jié)果運行滔驶,或者程序有了錯誤或警告遇革,不要太擔(dān)心卿闹,學(xué)習(xí)的最佳方式就是試錯揭糕,熟能生巧,到我們的網(wǎng)站上下載示例代碼锻霎,對比一下代碼著角,多試幾次,直到搞定這個程序為止旋恼。

Page 212 | Chapter 7: Devices and Auto Layout

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吏口,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冰更,更是在濱河造成了極大的恐慌产徊,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜀细,死亡現(xiàn)場離奇詭異舟铜,居然都是意外死亡,警方通過查閱死者的電腦和手機奠衔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門谆刨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人归斤,你說我怎么就攤上這事痊夭。” “怎么了脏里?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵她我,是天一觀的道長。 經(jīng)常有香客問我膝宁,道長鸦难,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任员淫,我火速辦了婚禮合蔽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘介返。我一直安慰自己拴事,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布圣蝎。 她就那樣靜靜地躺著刃宵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪徘公。 梳的紋絲不亂的頭發(fā)上牲证,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音关面,去河邊找鬼坦袍。 笑死十厢,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的捂齐。 我是一名探鬼主播蛮放,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奠宜!你這毒婦竟也來了包颁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤压真,失蹤者是張志新(化名)和其女友劉穎娩嚼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滴肿,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡待锈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘴高。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竿音。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拴驮,靈堂內(nèi)的尸體忽然破棺而出春瞬,到底是詐尸還是另有隱情,我是刑警寧澤套啤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布宽气,位于F島的核電站,受9級特大地震影響潜沦,放射性物質(zhì)發(fā)生泄漏萄涯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一唆鸡、第九天 我趴在偏房一處隱蔽的房頂上張望涝影。 院中可真熱鬧,春花似錦争占、人聲如沸燃逻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伯襟。三九已至,卻和暖如春握童,著一層夾襖步出監(jiān)牢的瞬間姆怪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留稽揭,地道東北人红伦。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像淀衣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子膨桥,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容