布局方式
布局方式我知道三種:1 純代碼計(jì)算控件尺寸,不使用系統(tǒng)和第三方工具 2 使用系統(tǒng)自帶函數(shù)或者使用 Masonry 等第三方框架 3 使用系統(tǒng)自帶 StoryBoard。
StoryBoard 胡謅
1 子控件和父控件上拖拖約束就完了。
[注] 在不同尺寸屏幕上顯示相同的內(nèi)容(對(duì)應(yīng)的,子控件的大小肯定會(huì)發(fā)生變化)。 2 在大尺寸屏幕上顯示更多的內(nèi)容(控件在所有屏幕上的顯示尺寸是一樣的,在大屏幕上能顯示的內(nèi)容更多) 以上兩種情況,可以查看蘋果 APP Store 參考。
2 約束添加原則
1 能不多加就不多加,一個(gè)控件的基本約束保證在 (1) 水平和豎直方向 (2) 寬度和高度的約束。
2 比例約束、優(yōu)先級(jí)約束可以解決許多不可能的任務(wù),不要多加。
3 解決黃色警告,關(guān)注控制臺(tái)打印,及時(shí)解決,不在約束問題上出錯(cuò)。
[注] 1 StoryBoard 中的約束最終操作的也是控件的位置 (x,y) 和尺寸 (hight,width),不能站在后來者的角度說前者的不好。在開發(fā)中,要保持靈活性,應(yīng)該根據(jù)實(shí)際情況選擇代碼+Xib 或者 StoryBoard 來完成任務(wù)。
2 使用 StoryBoard 的幾個(gè)可能存在的問題
(1) 出現(xiàn)在控制臺(tái)上的約束問題不好調(diào)試 (目前我也沒有好的解決方法,只有在對(duì)應(yīng)位置將約束刪掉重新添加)。
(2) 版本管理不好控制。針對(duì)開發(fā)團(tuán)隊(duì)規(guī)模調(diào)整,如果 2-3 人的小團(tuán)隊(duì),可以只使用一個(gè) Git 分支,按照順序提交代碼。如果是中大型團(tuán)隊(duì),可以(1)專人管理 StoryBoard (2)按模塊區(qū)分,一個(gè)模塊對(duì)應(yīng)一個(gè) StoryBoard 文件。
3 最最重要的問題
一定要親自動(dòng)手拖!別人寫的 StoryBoard 和 AutoLayout 的文章可以為你提供思路,但是請(qǐng)自己思考為什么這么做,然后不要“硬搬”文章的套路。孰能生巧。
3 關(guān)于兩種形式
3.1 不同屏幕上控件內(nèi)容相同(定間距)
此時(shí),控件肯定被拉伸了(水平伸縮、中心放縮、豎直伸縮等)。不變的是誰?控件與屏幕上下左右四條邊的距離(簡(jiǎn)稱間距)!
水平或者豎直拉伸:以水平拉伸為例,保持控件水平位置不變(可以設(shè)置距上距離不變),設(shè)置到屏幕兩邊的距離為定值。
中心放縮:居中顯示的視圖 做法1:設(shè)置控件到上下左右的距離為定值,自然會(huì)被拉升。做法2:設(shè)置控件為水平豎直居中,然后設(shè)置控件的寬高和屏幕視圖之間的比例為某一個(gè)定值,同樣能實(shí)現(xiàn)。設(shè)置比例時(shí)應(yīng)該注意兩個(gè)關(guān)系控件的前后關(guān)系。
這里控件的大小一般在不同屏幕上可不是定值哦。
3.2 大屏幕上顯示的內(nèi)容多一點(diǎn)(定尺寸)
在所有屏幕上的控件大小都相同,但是現(xiàn)實(shí)內(nèi)容多寡是不同的。這里的控件的大小就可以使用定值了。
例子:APP Store 中的 APP 輪播圖。
4 實(shí)現(xiàn)新浪微博的個(gè)人中心詳情頁
將約束拖到控制器中進(jìn)行動(dòng)態(tài)調(diào)整。