iOSiOS开发-自动布局

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

2016-03-23  本文已影响6905人  admxjx

很多时候会用到自动布局,例:分类标签、搜索页面中的热门搜索等等。
所以,简单的介绍一下:
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的介绍
CGFloat tagViewHeight = 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));
}];

本人QQ:1103868202... 新建QQ群:398369031

欢迎来讨论交流技术。

PS:(现就职于杭州梦想小镇. 蓝麦电商 )

上一篇下一篇

猜你喜欢

热点阅读