最近在做的一個(gè)項(xiàng)目闺魏,開(kāi)發(fā)ui界面的時(shí)候,根據(jù)iPhone 7 來(lái)做界面適配俯画,在其他屏幕上面析桥,顯示的效果不是按等比例顯示的。尤其是在小尺寸的屏幕艰垂,比如iPhone5 se上面泡仗,顯示不全,有些空間猜憎,顯示不出來(lái)娩怎。為此想找一種能夠等比例布局的方案。
一胰柑、可選方案
功夫不負(fù)苦心人截亦,網(wǎng)上找到幾篇文章,介紹等比例適配的方法柬讨。概括起來(lái)魁巩,主要有以下三種:
1.使用第三方庫(kù):masonry
2.使用第三方庫(kù):PureLayout
3.使用系統(tǒng)自帶的auto layout
經(jīng)過(guò)一番比較,最終還是選擇了使用系統(tǒng)自帶的auto layout來(lái)做等比例適配姐浮。
主要衡量準(zhǔn)就兩個(gè):
1.能夠完成等比例適配的任務(wù)目標(biāo)
2.簡(jiǎn)單易用,便于修改葬馋。
3.所見(jiàn)即所得
據(jù)我有限的了解卖鲤,masonry和pureLayout都需要寫(xiě)很多代碼來(lái)控制布局,不能所見(jiàn)即所得畴嘶。對(duì)于ui經(jīng)常會(huì)改動(dòng)的情況蛋逾,這兩個(gè)方案,也稍顯麻煩了點(diǎn)窗悯。像我這樣喜歡簡(jiǎn)單区匣,不喜歡麻煩的人,自然而然選擇最簡(jiǎn)單的方案蒋院。
二亏钩、布局需求
界面布局的需求總結(jié)起來(lái)莲绰,根據(jù)界面尺寸、界面位置和絕對(duì)值姑丑、等比例的相對(duì)值來(lái)分為以下幾種需求:
1.確定界面的尺寸
數(shù)學(xué)原理描述:
width = multi * WIDTH + const
height = multi * HEIGHT + const
其中width為界面的尺寸蛤签,WIDTH為參考界面的尺寸,可以是父界面或者屏幕寬度栅哀,也可以是其他界面震肮。multi為比例系數(shù)。const為偏移值留拾。
height為界面的高度戳晌,HEIGHT為參考界面的高度。
絕對(duì)尺寸
一般這種情況下痴柔,multi設(shè)為1沦偎,只修改const的值即可實(shí)現(xiàn)一個(gè)界面比另一個(gè)界面尺寸的固定差值。
等比例的相對(duì)尺寸
一般這種情況下竞帽,const設(shè)為0扛施,通過(guò)改變multi的值,來(lái)控制一個(gè)界面相對(duì)于另一個(gè)界面的等比例縮放后的尺寸屹篓。
2.確定界面的位置
數(shù)學(xué)原理描述:
X = multi * WIDTH + const
Y = multi * HEIGHT + const
其中X為界面的橫坐標(biāo)疙渣,WIDTH為參考界面的尺寸,可以是父界面或者屏幕寬度堆巧,也可以是其他界面妄荔。multi為比例系數(shù)。const為偏移值谍肤。
Y為界面的縱坐標(biāo)啦租,HEIGHT為參考界面的高度。
絕對(duì)位置:
一般這種情況下荒揣,multi設(shè)為1篷角,只修改const的值即可實(shí)現(xiàn)一個(gè)界面比另一個(gè)界面的固定偏移。
等比例的相對(duì)位值:
一般這種情況下系任,const設(shè)為0恳蹲,通過(guò)改變multi的值,來(lái)控制一個(gè)界面相對(duì)于另一個(gè)界面的等比例縮放后的偏移位置俩滥。
三嘉蕾、實(shí)現(xiàn)方法
1.具體實(shí)現(xiàn)方法,對(duì)于設(shè)置絕對(duì)坐標(biāo)和絕對(duì)尺寸的方法霜旧,直接設(shè)置約束的const值即可错忱。
2.對(duì)于相對(duì)尺寸和相對(duì)坐標(biāo)的設(shè)置方法,需要設(shè)置完約束后,將const設(shè)為0以清,并將multi設(shè)置為界面的尺寸:相對(duì)界面的尺寸儿普。
參考鏈接:
1.Storyboard使用技巧:使用比例方式布局?
https://segmentfault.com/a/1190000002997979?name=ios開(kāi)發(fā)&description=&isPrivate=1
2.iOS AutoLayout 百分比布局
http://blog.csdn.net/caryaliu/article/details/49283699
3.iOS開(kāi)發(fā)-AutoLayout控件等比間距的百分比布局
https://segmentfault.com/a/1190000005272005