iOS开发当年奋不顾身跳的那些~坑

iOS开发中使用Masonry设置极限约束以及优先级

2018-12-17  本文已影响55人  梁森的简书

要求:

对某个控制器上的view上的label进行布局,要求其右侧至少与view水平方向的中心处对齐,宽度随着文字的增加逐渐变宽,但其右侧距离view右侧至少10pt.

使用Masonry

使用Masonry对UILabel进行约束,设置其宽度的最小约束和距离右侧的最大距离
代码:

  UILabel * orangeLbl = [UILabel new];
orangeLbl.backgroundColor = [UIColor orangeColor];
[self.view addSubview:orangeLbl];
orangeLbl.text = @"设置最小宽度-";
[orangeLbl mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(self.view.mas_left).offset(10);
    make.top.equalTo(self.view.mas_top).offset(200);
    make.width.mas_greaterThanOrEqualTo(self.view.frame.size.width * 0.5 - 10); // 设置最小宽度
    make.right.mas_lessThanOrEqualTo(self.view.mas_right).offset(-10);  // 设置距离右边最小距离
}];

使用到了mas_greaterThanOrEqualTo和mas_lessThanOrEqualTo

要求

某个控制器上的view上有两个label,左、右两边各一个,两者之间的间距为10pt,左、右两边label的宽度最少为100,但当两个label上的文字都很多的时候首先左侧的label上展示的文字更多。

使用Masonry

这是需要使用Masonry设置UILabel抗压缩的优先级
代码:

   UILabel * leftlbl = [UILabel new];
[self.view addSubview:leftlbl];
UILabel * rightLbl = [UILabel new];
[self.view addSubview:rightLbl];

leftlbl.backgroundColor = [UIColor yellowColor];
rightLbl.backgroundColor = [UIColor redColor];

[rightLbl mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(self.view.mas_top).offset(100);
    make.right.equalTo(self.view.mas_right).offset(-10);
    make.width.mas_greaterThanOrEqualTo(100);   // 这是最小宽度
}];
[leftlbl mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(self.view.mas_left).offset(10);
    make.top.equalTo(self.view.mas_top).offset(100);
    make.right.equalTo(rightLbl.mas_left).offset(-10);
    make.width.mas_greaterThanOrEqualTo(100);
}];

leftlbl.text = @"这是左边的文字-";
rightLbl.text = @"这是右边的文字-这是右边的文字-这是右边的文字-";

// 设置抗压缩优先级
[leftlbl setContentCompressionResistancePriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];
[rightLbl setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];

leftlbl的抗压缩优先级更高,所以leftlbl不容易被压缩,能展示更多的文字。

放个效果图:


屏幕快照 2018-12-17 下午10.59.39.png

放个demo
https://gitee.com/liangsenliangsen/masonry_priority.git

本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊

上一篇下一篇

猜你喜欢

热点阅读