iOS自動布局框架-Masonry詳解 二維碼
發表時間:2018-11-01 00:00 目前iOS開發中大多數頁面都已經開始使用Interface Builder的方式進行UI開發了,但是在一些變化比較復雜的頁面,還是需要通過代碼來進行UI開發的。而且有很多比較老的項目,本身就還在采用純代碼的方式進行開發。 而現在iPhone和iPad屏幕尺寸越來越多,雖然只需要根據屏幕點進行開發,而不需要基于像素點進行UI開發。但如果在項目中根據不同屏幕尺寸進行各種判斷,寫死坐標的話,這樣開發起來是很吃力的。 所以一般用純代碼開發UI的話,一般都是配合一些自動化布局的框架進行屏幕適配。蘋果為我們提供的適配框架有:VFL、UIViewAutoresizing、Auto Layout、Size Classes等。 其中Auto Layout是使用頻率較高的布局框架,但是其也有弊端。就是在使用NSLayoutConstraint的時候,會發現代碼量很多,而且大多都是重復性的代碼,以于好多人都不想用這個框架。 后來Github上的出現了基于NSLayoutConstraint封裝的第三方布局框架Masonry,Masonry使用起來非常方便,本篇文章就詳細講一下Masonry的使用。 Masonry介紹 這篇文章只是簡單介紹Masonry,以及Masonry的使用,并且會舉一些例子出來。但并不會涉及到Masonry的內部實現,以后會專門寫篇文章來介紹其內部實現原理,包括順便講一下鏈式語法。 什么是Masonry Masonry是一個對系統NSLayoutConstraint進行封裝的第三方自動布局框架,采用鏈式編程的方式提供給API。系統AutoLayout支持的操作,Masonry都支持,相比系統API功能來說,Masonry是有過之而無不及。 Masonry采取了鏈式編程的方式,代碼理解起來非常清晰易懂,而且寫完之后代碼量看起來非常少。之前用NSLayoutConstraint寫很多代碼才能實現的布局,用Masonry少一行代碼就可以搞定。下面看到Masonry的代碼就會發現,太簡單易懂了。 Masonry是同時支持Mac和iOS兩個平臺的,在這兩個平臺上都可以使用Masonry進行自動布局。我們可以從MASUtilities.h文件中,看到下面的定義,這就是Masonry通過宏定義的方式,區分兩個平臺獨有的一些關鍵字。 |