簡介
MyLayout是一套iOS界面視圖布局框架。其內(nèi)核是基于對UIView的layoutSubviews方法的重載以及對子視圖的bounds和center屬性的設(shè)置而實(shí)現(xiàn)的。MyLayout功能強(qiáng)大而且簡單易用,它集成了iOS Autolayout和Size Classes、android的5大布局體系、HTML/CSS的浮動定位技術(shù)以及flex-box和bootstrap框架等市面上主流的平臺的界面布局功能,同時(shí)提供了一套非常簡單和完備的多屏幕尺寸適配的解決方案。MyLayout還提供了Swift版本TangramKit
MyLayout的優(yōu)勢
MyLayout的實(shí)現(xiàn)內(nèi)核是基于frame的設(shè)置,而不是對AutoLayout的封裝。因此在使用上不會受到任何操作系統(tǒng)版本的限制。
有文章表明用frame進(jìn)行布局的性能要高于用AutoLayout進(jìn)行布局的性能,尤其是當(dāng)界面內(nèi)視圖數(shù)量增加時(shí)效果更加明顯。
AutoLayout的思想是通過視圖之間的約束依賴來完成布局,但是約束依賴的結(jié)果是造成視圖之間的耦合性高而增大了界面更新的成本。而MyLayout則除了提供約束依賴外,還提供了根據(jù)視圖添加順序自動建立約束的功能,從而減少了這種顯示依賴關(guān)系建立的問題,最終的結(jié)果是簡化了布局的代碼量,以及減少了布局更新時(shí)的代碼修改量。
AutoLayout只是一種相對約束的布局,而MyLayout除了同時(shí)提供具有和AutoLayout相同能力的相對布局外、還提供了線性布局、框架布局、表格布局、流式布局、浮動布局、路徑布局7大布局體系,你完全可以根據(jù)你的界面需求來選擇一種最簡易的布局容器來實(shí)現(xiàn)你的功能,同時(shí)MyLayout還支持Size classes的機(jī)制,以及提供了一些實(shí)現(xiàn)屏幕尺寸完美適配的方法。
MyLayout主要是一種通過代碼進(jìn)行布局的解決方案,但是框架一樣可以支持和XIB以及SB結(jié)合布局的方式。并提供了視圖隱藏和顯示時(shí)會自動激發(fā)布局、布局視圖的高度自適應(yīng)(UITableviewCell動態(tài)高度)、標(biāo)簽云實(shí)現(xiàn)、左右內(nèi)容寬度自適應(yīng)、按比例分配尺寸和間距、整體??靠刂频鹊雀鞣N強(qiáng)大的功能。