簡(jiǎn)介

MyLayout是一套iOS界面視圖布局框架。其內(nèi)核是基于對(duì)UIView的layoutSubviews方法的重載以及對(duì)子視圖的bounds和center屬性的設(shè)置而實(shí)現(xiàn)的。MyLayout功能強(qiáng)大而且簡(jiǎn)單易用,它集成了iOS Autolayout和Size Classes、android的5大布局體系、HTML/CSS的浮動(dòng)定位技術(shù)以及flex-box和bootstrap框架等市面上主流的平臺(tái)的界面布局功能,同時(shí)提供了一套非常簡(jiǎn)單和完備的多屏幕尺寸適配的解決方案。MyLayout還提供了Swift版本TangramKit

MyLayout的優(yōu)勢(shì)

  • MyLayout的實(shí)現(xiàn)內(nèi)核是基于frame的設(shè)置,而不是對(duì)AutoLayout的封裝。因此在使用上不會(huì)受到任何操作系統(tǒng)版本的限制。

  • 有文章表明用frame進(jìn)行布局的性能要高于用AutoLayout進(jìn)行布局的性能,尤其是當(dāng)界面內(nèi)視圖數(shù)量增加時(shí)效果更加明顯。

  • AutoLayout的思想是通過視圖之間的約束依賴來完成布局,但是約束依賴的結(jié)果是造成視圖之間的耦合性高而增大了界面更新的成本。而MyLayout則除了提供約束依賴外,還提供了根據(jù)視圖添加順序自動(dòng)建立約束的功能,從而減少了這種顯示依賴關(guān)系建立的問題,最終的結(jié)果是簡(jiǎn)化了布局的代碼量,以及減少了布局更新時(shí)的代碼修改量。

  • AutoLayout只是一種相對(duì)約束的布局,而MyLayout除了同時(shí)提供具有和AutoLayout相同能力的相對(duì)布局外、還提供了線性布局、框架布局、表格布局、流式布局、浮動(dòng)布局、路徑布局7大布局體系,你完全可以根據(jù)你的界面需求來選擇一種最簡(jiǎn)易的布局容器來實(shí)現(xiàn)你的功能,同時(shí)MyLayout還支持Size classes的機(jī)制,以及提供了一些實(shí)現(xiàn)屏幕尺寸完美適配的方法。

  • MyLayout主要是一種通過代碼進(jìn)行布局的解決方案,但是框架一樣可以支持和XIB以及SB結(jié)合布局的方式。并提供了視圖隱藏和顯示時(shí)會(huì)自動(dòng)激發(fā)布局、布局視圖的高度自適應(yīng)(UITableviewCell動(dòng)態(tài)高度)、標(biāo)簽云實(shí)現(xiàn)、左右內(nèi)容寬度自適應(yīng)、按比例分配尺寸和間距、整體停靠控制等等各種強(qiáng)大的功能。

AutoLayout和frame布局的性能比較