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

需求1:

对某个控制器上的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

需求2

某个控制器上的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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Masonry是一个轻量级的布局框架,它拥有自己的描述语法(采用更优雅的链式语法封装)来自动布局,具有很好可读性且...
    AngeloD阅读 3,378评论 0 9
  • Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了并具有高可读性...
    3dcc6cf93bb5阅读 1,834评论 0 1
  • (一)Masonry介绍 Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布...
    木易林1阅读 2,397评论 0 3
  • [置顶]iOS - Masonry使用中的一些整理 标签:iOS资源大全iOS常用方法iOS学习资料Masonry...
    DreamMakerSky阅读 3,201评论 0 4
  • 慧语禅心:习忘者可以养生 刻意养生,已经是对自己的健康缺乏信心,而忧心伤身,怎及顺应自然、心无挂碍,无为而无不为有...
    xcy无名阅读 246评论 0 0