iOS學習之Masonry第三方框架
1、Masonry概述
目前最流行的Autolayout第三方框架
用優雅的程式碼方式編寫Autolayout
省去了蘋果官方噁心的Autolayout程式碼
大大提高了開發效率
框架地址:https://github.com/SnapKit/Masonry
2、常用方法
這個方法只會新增新的約束
[blueView mas_makeConstraints:^(MASConstraintMaker *make) {
}];
這個方法會將以前的所有約束刪掉,新增新的約束
[blueView mas_remakeConstraints:^(MASConstraintMaker *make) {
}];
這個方法將會覆蓋以前的某些特定的約束
[blueView mas_updateConstraints:^(MASConstraintMaker *make) {
}];
3、約束型別
尺寸:
width(寬)\height(高)\size(大小)
寬度約束
make.width.mas_equalTo(100);
高度約束
make.height.mas_equalTo(100);
大小約束(與上面兩句等價)
make.size.mas_equalTo(CGSizeMake(100, 100));
邊界:
left\leading(左邊界)\right\trailing(右邊界)\top(頂部邊界)\bottom(底部邊界)
左邊(leading類似)
make.left.mas_equalTo(self.view).offset(50);
右邊(trailing類似)
make.right.equalTo(self.view).offset(-20);
頂部
make.top.equalTo(self.view).offset(20);
底部
make.bottom.mas_equalTo(self.view).offset(-50);
中心點:
center\centerX\centerY
居中(水平+垂直)
尺寸是父控制元件的一半
[blueView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(self.view).multipliedBy(0.5);
make.center.mas_equalTo(self.view); // 與下面兩句程式碼等價
// make.centerX.mas_equalTo(self.view);
// make.centerY.mas_equalTo(self.view);
}];
內邊距實現邊界約束:
edges
UIEdgeInsets 內邊距
make.edges.mas_equalTo(self.view).insets(UIEdgeInsetsMake(50, 50, 50, 50));
4、mas_字首修飾與不修飾的區別
mas_equalTo和equalTo
預設情況下:
mas_equalTo有自動包裝功能,比如自動將20包裝為@20
equalTo沒有自動包裝功能
mas_equalTo的功能強於 > equalTo,可以一直使用mas_equalTo
mas_width和width
預設情況下:
width是make物件的一個屬性,用來新增寬度約束用的,表示對寬度進行約束
mas_width是一個屬性值,用來當做equalTo的引數,表示某個控制元件的寬度屬性
mas_height、mas_centerX以此類推
消除區別辦法
如果新增了下面的巨集,那麼 mas_equalTo 和 equalTo 就沒有區別
#define MAS_SHORTHAND_GLOBALS
注意:這個巨集一定要新增到#import "Masonry.h"前面
如果新增了下面的巨集,mas_width也可以寫成width
#define MAS_SHORTHAND
示例程式碼:
//define this constant if you want to use Masonry without the 'mas_' prefix
#define MAS_SHORTHAND
//define this constant if you want to enable auto-boxing for default syntax
#define MAS_SHORTHAND_GLOBALS
#import "Masonry.h"
- (void)viewDidLoad {
[super viewDidLoad];
// 藍色控制元件
UIView *blueView = [[UIView alloc] init];
blueView.backgroundColor = [UIColor blueColor];
[self.view addSubview:blueView];
// 紅色控制元件
UIView *redView = [[UIView alloc] init];
redView.backgroundColor = [UIColor redColor];
[self.view addSubview:redView];
// 新增約束
CGFloat margin = 20;
CGFloat height = 50;
[blueView makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view.left).offset(margin);
make.right.equalTo(redView.left).offset(-margin);
make.bottom.equalTo(self.view.bottom).offset(-margin);
make.height.equalTo(height);
make.top.equalTo(redView.top);
make.bottom.equalTo(redView.bottom);
make.width.equalTo(redView.width);
}];
[redView makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.view.right).offset(-margin);
}];
}
5、可有可無的用法
以下方法都僅僅是為了提高可讀性,可有可無
with
- (MASConstraint*)with {
return self;
}
使用情況示例程式碼
// 尺寸限制:100x100
// 位置:粘著父控制元件右下角,間距是20
[blueView mas_makeConstraints:^(MASConstraintMaker *make) {
// 寬度約束
make.width.equalTo(@100);
// 高度約束
make.height.equalTo(@100);
// 右邊
make.right.equalTo(self.view.mas_right).with.offset(-20);
// 頂部
make.top.equalTo(self.view.mas_top).with.offset(20);
}];
and
- (MASConstraint*)and {
return self;
}
使用情況示例程式碼
// 尺寸限制:100x100
// 位置:粘著父控制元件右下角,間距是20
[blueView mas_makeConstraints:^(MASConstraintMaker *make) {
// 寬度高度約束
make.width.and.height.mas_equalTo(100);
// 右邊
make.right.equalTo(self.view).offset(-20);
// 頂部
make.top.equalTo(self.view).offset(20);
}];
相關文章
- Masonry學習
- IOS基礎-Masonry 練習iOS
- iOS 自動佈局框架 – Masonry 詳解iOS框架
- iOS自動佈局框架 - Masonry詳解iOS框架
- iOS開發之原始碼解析 - MasonryiOS原始碼
- Masonry 原始碼學習整理原始碼
- 使用第三方框架 Masonry 實現自動佈局框架
- iOS框架·Masonry原始碼深度解析及學習啟示:設計模式與鏈式程式設計思想iOS框架原始碼設計模式程式設計
- iOS-UIKit框架學習—UIWindowiOSUI框架
- iOS進階之masonry細緻入微_MASUtilities.hiOS
- iOS-UIKit框架學習—UIButtoniOSUI框架
- iOS學習心得之:KVOiOS
- 深度學習之Tensorflow框架深度學習框架
- 集合框架學習之List介面框架
- IOS 學習之XML解析(一)iOSXML
- 讀autolayout開源框架masonry想MVC框架MVC
- Android之Mina框架學習Android框架
- Java之struts2框架學習Java框架
- 集合框架原始碼學習之ArrayList框架原始碼
- iOS自動佈局——Masonry詳解iOS
- iOS學習之深入理解RunLoopiOSOOP
- 常用的iOS第三方框架6iOS框架
- [iOS學習筆記]·FMDB:第三方資料庫處理框架·用法示例篇(附原始碼Demo)iOS筆記資料庫框架原始碼
- iOS學習筆記20 地圖(二)MapKit框架iOS筆記地圖APK框架
- 駁 《駁 《駁 《駁 《停止學習框架》》》》、《駁 《駁 《停止學習框架》》》、《駁 《停止學習框架》》、《停止學習框架》框架
- 集合框架原始碼學習之LinkedList框架原始碼
- Java框架學習之Hibernate入門Java框架
- iOS開發-Masonry約束寬高比iOS
- iOS Masonry 一些日常使用方法iOS
- IOS學習筆記——iOS元件之UIScrollView詳解iOS筆記元件UIView
- 深度學習學習框架深度學習框架
- IOS學習之NSNotificationCenter訊息機制iOS
- SSM框架學習之Spring的AOP學習以及資料整理SSM框架Spring
- Python教程系列之Flask框架的學習PythonFlask框架
- java基礎學習之類集框架(十)Java框架
- iOS學習iOS
- 學習iOSiOS
- iOS逆向學習之五(加殼?脫殼?)iOS