masonry使用、介绍和获取自动布局后的高度

很多时候会用到自动布局,例:分类标签、搜索页面中的热门搜索等等。

所以,简单的介绍一下:

1.masonry的自动布局

2.获取自动布局后的高度

masonry的自动布局

// footerView 是之前创建的View[footerView addSubview:self.tagView];// 自动布局 self.tagView[self.tagView mas_makeConstraints: ^(MASConstraintMaker *make) {// self.tagView的获取父视图UIView*superView = footerView;// 设置宽度为父视图的宽度-50 等价于(self.tagView.frame.size.width = footerView.frame.size.width - 50);make.width.equalTo(superView.mas_width).with.offset(-50);// 设置X为父视图的X+50 等价于(self.tagView.frame.origin.x = footerView.frame.origin.x + 54;);make.top.equalTo(superView.mas_top).with.offset(54);// 左距离make.left.equalTo(superView.mas_left).with.offset(25);    make.leading.equalTo(superView.mas_leading).with.offset(0);    make.trailing.equalTo(superView.mas_trailing);    DLog(@"___%@",@(self.tagView.height))}];

获取自动布局后的高度

调用self.tagView父视图的 layoutIfNeeded 后可以获取高度

layoutIfNeeded

如果,有需要刷新的标记,立即调用layoutSubviews进行布局

[footerView layoutIfNeeded];// 下面会有关于layoutIfNeeded的介绍CGFloattagViewHeight =self.tagView.height;

关于UIView的布局的方法

layoutSubviews

layoutIfNeeded

setNeedsLayout

setNeedsDisplay

drawRect

sizeThatFits

sizeToFit

http://www.jianshu.com/p/bfa45eb4c4ba

之前在看资料的时候有发些人调用以下这个方法获取self.tagView的height

[self.tagView layoutIfNeeded];

CGFloat height = [self.tagView systemLayoutSizeFittingSize:

UILayoutFittingCompressedSize].height;

本人在模拟器中调用此方法能获取到self.tagView的高度,但在真机调试中失败了。

Masonry中的一些常用属性

// 左侧

@property (nonatomic, strong, readonly) MASConstraint *left;

// 顶部

@property (nonatomic, strong, readonly) MASConstraint *top;

// 右侧

@property (nonatomic, strong, readonly) MASConstraint *right;

// 底部

@property (nonatomic, strong, readonly) MASConstraint *bottom;

// 首部

@property (nonatomic, strong, readonly) MASConstraint *leading;

// 尾部

@property (nonatomic, strong, readonly) MASConstraint *trailing;

// 宽

@property (nonatomic, strong, readonly) MASConstraint *width;

// 高

@property (nonatomic, strong, readonly) MASConstraint *height;

// 中心点x

@property (nonatomic, strong, readonly) MASConstraint *centerX;

// 中心点y

@property (nonatomic, strong, readonly) MASConstraint *centerY;

// 文本基线

@property (nonatomic, strong, readonly) MASConstraint *baseline;

// 居中显示视图

UIView *myView = [[UIView alloc] init];

myView.backgroundColor = [UIColor blueColor];

[self.view addSubview:myView];

[myView mas_makeConstraints:^(MASConstraintMaker *make) {

// 设置当前center和父视图的center一样

make.center.mas_equalTo(self.view);

// 设置当前视图的大小

make.size.mas_equalTo(CGSizeMake(300, 300));

}];

你可能感兴趣的:(masonry使用、介绍和获取自动布局后的高度)