深入理解IOS控制項布局之Masonry布局框架

2022-09-24 20:09:12 字數 2054 閱讀 2791

前言:

回想起2023年做ios開發的時程式設計客棧候,那時候並沒有採用手寫布局**的方式,而是採用xib檔案來編寫,如果使用純**方式是基於window的size(320,480)計算出乙個相對位置進行布局,那個時候windows的size是固定不變的,隨著iphone5的發布,windows的size(320,568)也發生了變化,而採用autoresizingmask的方式進行適配,到後來iphone 6之後windows size的寬度也隨之變化,開始拋棄autoresizingmask改用autolayout了,使用autolayout進行適配我也是最近重新做ios開發才接觸的,公司使用masonry框架進行布局適配。所以學習使用這個布局框架對我來說至關重要,它大大提高了開發效率而且最近使用起來很多語法和android有很大的相似之處。

什麼是masonry?

masonry是乙個輕量級的布局框架,擁有自己的描述語法,採用更優雅的鏈式語法封裝自動布局、簡潔明瞭、 並具有高可讀性、 而且同時支援 ios 和 max os x。

如何使用?

1.)引入標頭檔案

我這裡是在全域性引用pc**件中引用的

#import "masonry.h"

2.)基本語法

masonry提供的屬性

masonry提供了三個函式方法

我們根據不同的使用場景來選擇使用不同的函式方法。

3.)具體舉例

比如乙個往父控制項中新增乙個上下左右與父控制項間距為50的子檢視

新增約束

uiview *tempview=[[uiview alloc]init];

tempview.backgroundcolor=[uicolor greencolor];

[self.view addsubview:tempview];

[tempview mas_makeconstraints:^(masconstraintmaker *make) ];

等價於uiview *tempview=[[uiview alloc]init];

tempview.backgroundcolor=[uicolor greencolor];

[self.view addsubview:tempview];

[tempview mas_makeconstraints:^(masconstraintmaker *make) ];

也可以簡化為下面這種

uiview *tempview=[[uiview alloc]init];

tempview.backgroundcolor=[uicolor greencolor];

[self.view addsubview:tempview];

[tempview mas_makeconstraints:^(masconstraintmaker *make) ];

又等價於

uiview *tempview=[[uiview alloc]init];

tempview.backgroundcolor=[uicolor greencolor];

[self.view addsubview:tempview];

[tempview mas_makeconstraints:^(masconstraintmaker *make) ];

更新約束

[tempview mas_updateconstraints:^(masconstraintmaker *make) ];

清除之前的約束保留最新的

[tempview mas_remakeconstraints:^(masconstraintmaker *make) ];

特別注意:

宣告約束必須在檢視新增到父試圖上面之後呼叫。

4.)mas_equalto與equalto

上面的舉例中分別使用了mas_equalto和equalto達到了同樣的效果,我在剛開始使用masonry的時候很容易混淆他們兩個,今天特意分析一下他們的區別。mas_equalto是乙個macro,比較的是值,equalto比較的是id型別。

本文標題: 深入理解ios控制項布局之masonry布局框架

本文位址: /ruanjian/ios/179151.html

深入理解BootStrap之柵格系統(布局)

1 柵格系統 布局 bootstrap內建了一套響應式 移動裝置優先的流式柵格系統,隨著螢幕裝置或視口 viewport 尺寸的增加,系統會自動分為最多12列。我在這裡是把bootstrap中的柵格系統叫做布局。它就是通過一系列的行 row 與列 column 的組合建立頁面布局,然後你的內容就可以...

php之深入理解架構布局講解

本文基於 php 核心剖析 與 php7底層設計與原始碼實現 所記筆記。對php核心的深入理解有助於我們對php的整體認識,對於業務層初期發展我們可以只了解基本語言的邏輯就可以寫出符合業務的 但是隨著業務的發展我們通過分析原始碼,編寫擴充套件,深入了解php內部機制,幫助我們理解php內部實現邏輯,...

深入理解Symbian控制項架構

在symbian程式中我們經常會看到import c這個關鍵字,它是c symbian 8.0a s60 2nd fp2 sc epoc32 include下e32def.h檔案裡面定義的乙個巨集.原定義如下 define import c declspec dllexport 那麼 declspe...