常见的masonry的使用是比较简单,可应付一些常见的布局。但有些布局是动态的,则需要一些masonry和自动布局的技巧,直接上图,如何实现图片中cell的布局。

下图中,播放量可变长(必须显示完整);绿底的是“出品人名称”超长显示...;置顶icon必须跟在出品人后面,但不能超过右侧海报图的left。如果写死lable的宽度是很low的代码,本文介绍一种优雅的API

为了说明问题,这里用:以下几个字段说明:playIcon(播放icon),playCount(播放量),account(出品人名称),topIcon(置顶),如果仅仅是下面的代码,

playIcon.right = playCount.left;
playCount.right = account.left;
account.right = topIcon.left;

实现不了图中的效果。
解决办法就是:在设置好right和left的基础上,使用masonry的优先级和uiview的布局优先级,主要涉及两个API,如下:

- (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis//别挤我,
- (void)setContentHuggingPriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis//抱紧,类似于sizefit,不会根据父view长度变化

那么,我们队account和playcount进行设置:

[_account setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal];//宽度不够时,可以被压缩
[_account setContentHuggingPriority:UILayoutPriorityRequired/*抱紧*/forAxis:UILayoutConstraintAxisHorizontal];
[_playCount setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];//不可以被压缩,尽量显示完整

另外,topIcon在设置left和right的时候,需要对right使用低优先级。

make.left.equalTo(self.playCount.mas_right).offset(gapMargin).priorityHigh();
make.right.equalTo(self.moreBtn.mas_left).priorityLow();//must be low priority

多个label,可变长情况下使用Masonry相关推荐

  1. iOS-iOS下的Masonry适配

    iOS适配分为两Auto-Layout和Masonry两种,Masonry就是基于Auto-Layout进行封装的第三方约束库, Auto-Layout毕竟是原生的约束库,而Masonry有时因为约束 ...

  2. PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳。在高并发或者间隔时长极短(如循环代码)的情况下,会出现大量重复数据。即使使用了第二个参数,也会重复,最好的方案是结

    转载地址:http://www.51-n.com/t-4264-1-1.html PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳.在高并发或者间隔时长极短(如循环 ...

  3. 高德地图 小米note3 在锁屏情况下(长时间) 白屏问题

    1.白屏问题先排查是否是自己导包有问题,申请的key是不是对 2.如果能加载出来地图,在锁屏情况下还是白屏 我这个就是在长时间锁屏的情况下回白屏,oppo  魅族 vivo 都没有问题,就小米note ...

  4. Java笔记(一)向上向下转型,枚举,初始化,可变长参数,代理,多态,继承

    写给自己看的笔记,很乱.如果有人感兴趣也可以看看,有问题可以问,我进行补充 这里写目录标题 Java数组传递 for循环 Java引用类型详解 可变长参数 ... 可变参数列表 Java参数类型变化 ...

  5. 扫盲!Java可变长数组,看这篇就对了!

    来自:ImportNew/覃佑桦 | 责编:乐乐 链接:tutorials.jenkov.com/java-performance/resizable-array.html 有时我们希望将把数据保存在 ...

  6. Java中可变长参数的使用及注意事项

    在Java5 中提供了变长参数(varargs),也就是在方法定义中可以使用个数不确定的参数,对于同一方法可以使用不同个数的参数调用,例如print("hello");print( ...

  7. python教程:可变长参数(*args、**kwargs)、返回值(return)

    一.可变长参数 1.默认参数: 代码如下: def information_register(name, age, country, sex):print("---注册信息---" ...

  8. java biginteger转int_如何在不使用java.math.BigInteger的情况下使用Java处理非常大的数字...

    我认为程序员应该已经实现了自己的bignum库,因此欢迎在这里. (当然,稍后您会发现BigInteger更好,并且可以使用它,但这是宝贵的学习经验.) (您可以在github上关注本课程的源代码.此 ...

  9. 如何在不亏本的情况下构建道德数据科学系统?

    Inspired by Google DeepMind's team, Shakir Mohamed, William Isaac, and Implikit's founder Marie-Ther ...

最新文章

  1. ApplicationListener,Game,Screen,Stage,Actor,Group
  2. 什么是JVM内存模型
  3. TypeScript里的类型为any和泛型的区别
  4. Linux-Android 修改屏蔽长按键功能
  5. SpringCloud Gateway 集成 oauth2 实现统一认证授权_03
  6. nginx 下开启pathinfo模式
  7. CA服务器的简单搭建
  8. SVN—如何安装SVN客户端软件
  9. Julia : 又一次 ”协变“ 中招!
  10. 数据库管理员、系统分析员、数据库设计人员,应用程序员的职责是什么?
  11. UI设计初学者必备的工具以及学习路线(附思维导图)
  12. 软路由 Vs 硬路由
  13. 数据结构之排序 --- 插入排序
  14. 项目启动报错 Error running ‘xxxApplication‘;Command line is too long,Shoerten command line for........
  15. 实验室cobot开发小tips
  16. 首页布局跟小程序如何配置Iconfont—小程序入门与实战(七)
  17. kaggle竞赛:泰坦尼克幸存者预测
  18. 实践.原创 | 加速IPv6部署,建设网络强国 (普及知识)
  19. 分析Crash report
  20. matlab focuss算法,惩罚参数及p范数对FOCUSS算法影响的仿真分析

热门文章

  1. php微信公众号开发之网页授权
  2. Java JDBC https://www.bilibili.com/video/BV1PE411i7CV?p=31spm_id_from=pageDriver
  3. MATLAB Simulink 替代方案 scilab
  4. 大发萨法撒噶是噶但是欢迎使用CSDN-markdown编辑器
  5. 面试难,应聘难,好工作,今安在?——《编程之美——微软技术面试心得》为你探路!即将上市,敬请关注!
  6. python locust提取参数_python+locust性能测试学习笔记
  7. Input输入框的验证
  8. matlab求线性方程组的符号解,符号代数线性方程组的MATLAB求解.PPT
  9. 不装了,我开源了5款人脸生成器!超模脸、网红脸、萌娃脸...
  10. 学计算机和电子信息工程那个更好找工作,电子信息工程专业毕业月薪一般是多少 好不好找工作...