? ? iOS的自動布局,可以使用xib/storyboard和frame(即代碼)來適配。對于xib/storyboard來說iPhone現(xiàn)在屏幕有4種尺寸,如果要針對不同屏幕進(jìn)行調(diào)整,用xib的話會比較麻煩,而且后期的維護(hù)工作將會非常的麻煩,xib適合一些布局簡單而且經(jīng)常不變的界面。如果用純代碼,可以在代碼中統(tǒng)一調(diào)整,但是用代碼的話也是麻煩,到處計算高度、寬度等,千萬大量代碼的冗余,對維護(hù)和開發(fā)的效率都很低。
? ? 所以在這里介紹純一個代碼自動布局的第三方庫:Masonry。這個庫使用率相當(dāng)高,在全世界都有大量的開發(fā)者在使用,其star數(shù)量也是相當(dāng)高的。
下載地址:github.com/CoderJackyHuang/MasonryDemo
1.1Masonry支持的一些屬性
@property?(nonatomic,?strong,?readonly)?MASConstraint?*left;左側(cè)
@property?(nonatomic,?strong,?readonly)?MASConstraint?*top上側(cè)
@property?(nonatomic,?strong,?readonly)?MASConstraint?*right;右側(cè)
@property?(nonatomic,?strong,?readonly)?MASConstraint?*bottom;下側(cè)
@property?(nonatomic,?strong,?readonly)?MASConstraint?*leading;首部
@property?(nonatomic,?strong,?readonly)?MASConstraint?*trailing;尾部
@property?(nonatomic,?strong,?readonly)?MASConstraint?*width;寬
@property?(nonatomic,?strong,?readonly)?MASConstraint?*height;高
@property?(nonatomic,?strong,?readonly)?MASConstraint?*centerX;橫向居中
@property?(nonatomic,?strong,?readonly)?MASConstraint?*centerY;縱向居中
@property?(nonatomic,?strong,?readonly)?MASConstraint?*baseline;文本基線
這些屬性與NSLayoutAttrubute的屬性是一樣的,比如NSLayoutAttrubuteLeft,NSLayoutAttrubuteTop,NSLayoutAttrubuteRight..........如下:

2.Masonry的一些簡單的實(shí)例
2.1居中顯示一個view


2.2一個對象相對于superView的約束


2.3讓兩個高度為150的view垂直居中且等寬且等間隔排列間隔為10(自動計算其寬度,高度)


2.4在UIScrollView順序排列一些view并自動計算contentSize



? ? 從scrollView的scrollIndicator可以看出scrollView的內(nèi)部已如我們所想排列好了,這里的關(guān)鍵就在于container這個view起到了一個中間層的作用能夠自動的計算uiscrollView的contentSize
2.5比例(multipliedBy)


總結(jié):
通過上面的例子,已經(jīng)把Masonry的功能介紹的差不多了,如果還有興趣的話可以自行研究官方的demo。Masonry是一個非常優(yōu)秀的autolayout庫 能夠節(jié)省大量的開發(fā)和學(xué)習(xí)時間 尤其適合純代碼的iOSer 在iPhone6發(fā)布后引發(fā)的適配潮中 Masonry一定可以助你一臂之力 。