约束优先级: 在Autolayout中每个约束都有一个优先级, 优先级的范围是1 ~ 1000。创建一个约束,默认的优先级是最高的1000

Content Hugging Priority: 该优先级表示一个控件抗被拉伸的优先级。优先级越高,越不容易被拉伸,默认是250。

Content Compression Resistance Priority: 该优先级和上面那个优先级相对应,表示一个控件抗压缩的优先级。优先级越高,越不容易被压缩,默认是750

有这样一个cell,底部品牌的长度是不固定的,右边的车系也是不固定,并且车系的高度会自动换行,numberOfLines=0;针对这样的cell布局,若果正常布局,达到的效果如下:



布局部分代码:

   [self.brandLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.productNameLb.mas_left);
make.top.mas_equalTo(lineView.mas_bottom).mas_offset(10);
}]; [self.carTypeLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(lineView.mas_bottom).mas_offset(10);
make.left.mas_equalTo(self.brandLabel.mas_right).mas_offset(20);
make.right.mas_offset(-10);
make.bottom.mas_offset(-10);
}];

很明显这里的布局属于约束冲突的情况,想要解决这样的情况方法也有多种,这里介绍一种autolayout里面有一个叫做抗压缩 抗拉伸的概念 方法如下:

  • (UILayoutPriority)contentHuggingPriorityForAxis:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(6_0);

    - (void)setContentHuggingPriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(6_0);

    - (UILayoutPriority)contentCompressionResistancePriorityForAxis:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(6_0);

    - (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(6_0);

然后回到我们这次的问题,很明显右边的内容过多导致左边内容显示不全,那么利用左边抗压缩的概念,提高左边label水平方向的抗压缩值,右边label提高垂直方向抗压缩值 代码如果

    [self.brandLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];  //设置水平方向抗压缩优先级高 水平方向可以正常显示
[self.carTypeLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; //设置垂直方向挤压缩优先级高 垂直方向可以正常显示

设置了抗压缩后达到了效果如下:

转载请标注来源 http://www.cnblogs.com/qqcc1388/p/9044927.html

Masonry 抗压缩 抗拉伸的更多相关文章

  1. iOS Masonry 抗压缩 抗拉伸

    约束优先级: 在Autolayout中每个约束都有一个优先级, 优先级的范围是1 ~ 1000.创建一个约束,默认的优先级是最高的1000 Content Hugging Priority: 该优先级 ...

  2. masonry 设置控件抗压缩及抗拉伸

    使用masonry正常设置约束时两个label的显示是下图 添加代码设置蓝色label的抗压缩属性后( [self.missionNameLabel setContentCompressionResi ...

  3. UILabel的抗压缩、抗拉伸、以及控件的约束简述

    今天来说一说UILabel的约束设置问题 首先主要介绍:Priority(控件约束的优先级).Content Hugging Priority(控件抗拉伸优先级).Content Compressio ...

  4. 谢欣伦 - 原创教程 - 使用GDI+绘制抗锯齿斜线

    早些年用过GDI的同学都知道,用GDI绘图API函数画斜线那个锯齿有多恶心.就像下图第一行的三条斜线: 坦白说,45度斜线在抗锯齿以前还是蛮抗锯齿的,哈哈,抗不抗都没什么差别. 那第二行很自然就看得出 ...

  5. Auto Layout Masonry

    1. Auto layout 1.1 NSLayoutConstraint 1.1.1 约束类 ios6.0可用 为了更好的适配各个尺寸 1.1.2 constraintWithItem:attrib ...

  6. Masonry使用注意事项

    1 理解自身内容尺寸约束与抗压抗拉 自身内容尺寸约束:一般来说,要确定一个视图的精确位置,至少需要4个布局约束(以确定水平位置x.垂直位置y.宽度w和高度h).但是,某些用来展现内容的用户控件,例如文 ...

  7. 使用Masonry搭建特殊布局时与xib的对比

    之前只有比较浅的接触过Masonry.项目中大多数的布局还是用xib中的AutoLayout与手码的frame计算相结合,相信也会有很多项目和我一样是这两种布局的组合.其实xib各方面用的感觉都挺好, ...

  8. masonry使用添加紧凑、抗压属性

    // 内容紧凑 - 优先完全显示内容,且不多占像素. [self.leftLabel setContentHuggingPriority:UILayoutPriorityDefaultHigh for ...

  9. 一行css解决图片统一大小后的拉伸问题(被冷漠的object-fit)

    一.先来个实战 1. 测试案例 需求: 要求表情库里所有表情包大小都固定 实际效果: 由于图片原始大小都不一样,强行设定大小值会导致拉伸,如果不设定大小则参差不齐.例如: //html <bod ...

随机推荐

  1. MSRDS机器人仿真软件学习资源汇总

    这款机器人仿真软件支持winxp,7,8,10操作系统. 最简洁快速的学习资源主要在helloapps上, 使用spl可以获得丰富的支持,如C#, Java, Python, MATLAB, LabV ...

  2. Material Design之CardView的使用

    本文介绍CardView这个控件的使用,CardView继承至FrameLayout类,是support-v7包下的一个类,使用时必须引入cardview依赖包,可在下载的sdk文件夹中找到... 使 ...

  3. 关于Yuri Boykov and Vladimir Kolmogorov 于2004年提出的max flow / min cut的算法的详解

    出处:http://blog.csdn.net/euler1983/article/details/5959622 算法优化algorithmgraphtree任务 这篇文章说的是Yuri Boyko ...

  4. Oracle Applications DBA 基础(一)

    1.引子 2014年9月13日 20:33 <oracle Applications DBA 基础>介绍Oracle Applications R12的系统架构, 数据库后台及应用系统的基 ...

  5. 【一天一道LeetCode】 #1 Two Sum

    一天一道LeetCode系列 (一)题目 Given an array of integers, return indices of the two numbers such that they ad ...

  6. C语言实现牛顿迭代法解方程

    利用迭代算法解决问题,需要做好以下三个方面的工作: 一.确定迭代变量 在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 二.建立迭 ...

  7. android studio比较长用的几款插件

    不懂安装studio插件,看参考博文:android stuido插件安装:http://blog.csdn.net/liang5630/article/details/46372447 1.Butt ...

  8. 关于linux音频指南

    音频操作是linux系统下必不可少,如您需要设计一个播放器,那么音频就是其中的一部分. 方法/步骤 1 音调: 振动的频率;     音量: 振动的幅度;     音色: 不同介质有不同声音;     ...

  9. error C4996: 'strcpy': This function or variable may be unsafe.

    vs2012用strcpy遇到的错误. 错误描述:error C4996: 'strcpy': This function or variable may be unsafe. Consider us ...

  10. ORM框架--GreenDao 3.0基本使用指南

    0. ORM框架--GreenDao 3.0基本使用指南 1. Gradle 的配置 这里可以参照官方的文档进行最新的配置(本示例的版本等你看到可能就不是最新的了),但是值得注意的一点是,GreenD ...