目录
学习笔记
- mas_makeConstraints是给view添加约束,约束有几种,分别是边距,宽,高,左上右下距离,基准线。添加过约束后可以有修正,修正有offset(位移)修正和multipliedBy(倍率)修正。
- mas_remakeConstraints() 移除之前的约束,重新添加新的约束
- mas_updateConstraints() 更新约束
- equalTo() 与 mas_equalTo()
- equalTo() 参数是对象类型,一般是视图对象或者mas_width这样的坐标系对象
- mas_equalTo() 和上面功能相同,参数可以传递基础数据类型对象,可以理解为比上面的API更强大
- width() 与mas_width()
- width() 用来表示宽度,例如代表view的宽度
- mas_width() 用来获取宽度的值。和上面的区别在于,一个代表某个坐标系对象,一个用来获取坐标系对象的值
注意:
- 使用 mas_makeConstraints方法的元素必须事先添加到父元素的中,例如[self.view addSubview:view];
- masequalTo 和 equalTo 区别:mas_equalTo 比 equalTo多了类型转换操作,一般来说,大多数时候两个方法都是 通用的,但是对于数值元素使用mas_equalTo。对于对象或是多个属性的处理,使用equalTo。特别是多个属性时,必须使用equalTo,例如make.left.and.right.equalTo(self.view);
- 注意到方法with和and,这连个方法其实没有做任何操作,方法只是返回对象本身,这这个方法的左右完全是为了方法写的时候的可读性 。
make.left.and.right.equalTo(self.view);和make.left.right.equalTo(self.view);是完全一样的,但是明显的加了and方法的语句可读性更好点。
应用实例 – 照片墙
第一次写share时的照片墙使用了 UICollectionView,这次用Masonry重新写了一遍
- 在"SceneDelegate.m"中
#import "ViewController.h"
@interface SceneDelegate ()
@end
@implementation SceneDelegate
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
self.window = [[UIWindow alloc] initWithWindowScene:scene];
[self.window makeKeyAndVisible];
ViewController *viewController = [[ViewController alloc] init];
//设置导航栏
UINavigationController *viewNav = [[UINavigationController alloc] initWithRootViewController:viewController];
self.window.rootViewController = viewNav;
- 在"ViewController.m"中
@interface ViewController () <UITableViewDelegate, UITableViewDataSource>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoa