前期要实现 一个自适应的label 的时候,就知到xib 约束是有优先级的,一直为深入研究;

乘写这个 博客的机会 ,试验下xib 约束的等级 ……

抱歉要查资料,在重新实践,先把主要浏览的网页 连接公布下

http://www.jianshu.com/p/f83fa37fdd46http://www.jianshu.com/p/f83fa37fdd46

现在开始行动……

首先截个图好了:

在vc 上直接 xib label(为什么用label?->因为label 容易直接容纳文字~文字是不是省略了,更容易被观察到)

       

Content Hugging Priority

--"内容的抗拉伸的优先级",水平、竖直默认值都是 251,

Content Compression Resistance Priority

-- "内容抗压缩的优先级",水平、竖直默认值都是 750

那么,试验开始:

首先,把一大串的文字写在label 上,呈现的结果是:

                  

总结:抗压缩能力 :

当约束优先级 < 默认值 时,展示内容 可以向约束小的那个方向扩展,显示更多的内容;

当 约束优先级 >= 默认值 时,就没有这个 特性了

其次,label 展示 很少的内容,但是把label 的视图设置 很大,呈现的结果:

               

总结: 抗拉伸能力:

当约束等级 < 默认值 时,展示的内容 变小,显示更合理的范围

当约束等级 >= 默认值 时,没有这个特性了

好了,约束的优先级,粗略的搞懂了 这几个问题,现在就可以做几个Demo了,曾经的好多问题也能得到更好的解决了

1,解决的问题:文字很多,xib label 做自适应显示试图,也就是个自适应的label

2,解决问题,这个显示内容在有这个字段时显示,没有的时候 不显示

贴代码喽……

import UIKit

class ViewController: UIViewController {
/*
做文字自适应的label 和 根据是否含有内容 出现、消失的label
*/
@IBOutlet weak var testHuggingPriorityLabel: UILabel! @IBOutlet weak var testCompressionResistancePriority: UILabel! @IBAction func didTestButtonClick(_ sender: UIButton) { sender.isSelected = !sender.isSelected if sender.isSelected { self.testHuggingPriorityLabel.text = ""
self.testCompressionResistancePriority.text = "你说你不好的时候,我疼,疼的不知道该怎么安慰你,\n 你说你醉的时候,我疼,疼的不能自制,思绪混乱。\n 我的语言过于苍白,心却是因为你的每一句话而疼。\n 太多不能,不如愿,想离开,离开这个让我疼痛的你。\n 转而,移情别恋,却太难,只顾心疼,我忘记了离开,\n一次一次,已经习惯,习惯有你,习惯心疼你的一切。" }else{ self.testHuggingPriorityLabel.text = "测试抗压缩能力,敢测试,就消失给你看";
self.testCompressionResistancePriority.text = "测试抗拉伸能力,敢测试,就变得超级大"
}
} /**
vc 固定的方法
*/
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}

xib 添加的约束:

        

swift 第七课 xib 约束的优先级的更多相关文章

  1. XIB约束布局问题(通过优先级改变界面布局)

    需要注意的是,只能修改可选约束的优先级,也就是说: 不允许将优先级由小于1000的值改为1000 不允许将优先级由1000修改为小于1000的值 例如,如果将优先级由250修改为1000,则会抛出异常 ...

  2. Kali Linux Web 渗透测试视频教程— 第七课 OpenVas

    Kali Linux Web 渗透测试视频教程— 第七课 OpenVas 文/玄魂 视频教程地址:http://edu.51cto.com/course/course_id-1887.html 目录 ...

  3. NeHe OpenGL教程 第七课:光照和键盘

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. 【C语言探索之旅】 第二部分第七课:文件读写

    内容简介 1.课程大纲 2.第二部分第七课: 文件读写 3.第二部分第八课预告: 动态分配 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏 ...

  5. 【C语言探索之旅】 第一部分第七课:循环语句

    内容简介 1.课程大纲 2.第一部分第七课: 循环语句 3.第一部分第八课预告: 第一个C语言小游戏 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编 ...

  6. 【Cocos游戏实战】功夫小子第七课之游戏主功能场景逻辑功能和暂停功能场景的分析和实现

    CSDN的markdown编辑器是吃屎了么! !.什么玩意.!写了一半写不了东西还全没了,搞个毛线! 本节课的视频教程地址是:第七课在此 假设本教程有帮助到您,希望您能点击进去观看一下,并且如今注冊成 ...

  7. Python学习第七课

    Python学习第七课 'Alex' "Alex"print('hello'*5) #重复输出字符串 print('hellowold'[2:]) #类似于切片操作:会取出 llo ...

  8. [译]Quartz.NET 框架 教程(中文版)2.2.x 之第七课 触发监听器和作业任务监听器

    第七课:触发监听器和作业任务监听器 监听器是在调度器中基于事件机制执行操作的对象.你大概可以猜到,触发监听器接收响应跟触发器有关的事件,作业任务监听器接收响应跟作业任务有关的事件. 跟触发器有关的事件 ...

  9. 红帽学习笔记[RHCSA] 第七课[网络配置相关]

    第七课[网络配置相关] 在Vmware中添加网卡 编辑 -> 编辑虚拟网络 -> 添加网络->随便选择一个如VMnet2-> 选择仅主机模式 -> 勾掉使用本地DHCP服 ...

随机推荐

  1. php首页定向到内页代码

    php首页定向到内页代码,index.php头部加上以下代码, /afish-c-1/换成内页链接即可. if($_SERVER["REQUEST_URI"]=='/' || $_ ...

  2. 2018年6月2日-徐州ICPC邀请赛日志-收获第一枚icpc奖牌

    2018年徐州ICPC邀请赛日志 Z的预言成真了,在正式比赛的前一天他的说说是“last one”,没错正赛后就是铜牌区的最后一名.最后揭榜前的15分钟,我们三个如坐针毡,最后奇迹诞生了!       ...

  3. waitpid()

    waitpid() pid_t waitpid(pid_t pid, int *status, int options); 参数: pid>0 只等待进程ID等于pid的子进程,不管其它已经有多 ...

  4. JavaScript查漏补缺

    js函数定义的三种方式: 函数声明 function sum(a,b){ return a+b } 函数表达式 var sum = function(a,b){ return a+b } Functi ...

  5. CSS3过渡动画&关键帧动画

    一.过渡动画 过渡(transition)动画,就是从初始状态过渡到结束状态这个过程中所产生的动画. 所谓的状态就是指大小.位置.颜色.变形(transform)等等这些属性. Note:不是所有属性 ...

  6. python协程初步---一个生成器的实现

    和列表那种一下占据长度为n的内存空间不同的是,生成器在调用的过程中逐步占据内存空间,因此有着很大的优势 一个斐波纳契数列的例子 def myfibbo(num): a,b=, count= while ...

  7. Vue 中的 ref $refs

    ref 被用来给DOM元素或子组件注册引用信息.引用信息会根据父组件的 $refs 对象进行注册.如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息就是组件实例 注意:只要想 ...

  8. 51nod 1051

    * 最大子矩阵 * sum[i][j] 表示第 i 行前 j 列的和,即每一行的前缀 * i,j 指针枚举列,k指针枚举行 * Now 记录当前枚举的子矩阵的价值 * 由于记录了前缀信息,一旦 Now ...

  9. 无缓存I/O操作和标准I/O文件操作区别

    本文转载于:http://www.360doc.com/content/11/0521/11/5455634_118306098.shtml 首先,先稍微了解系统调用的概念:       系统调用,英 ...

  10. django报错TypeRError:__init__() missing 1 required positional argument: 'on_delete'

    在添加外键的时候,在括号里添加on_delete=models.CASCADE即可 on_delete=models.CASCADE是级联删除的意思,意思就是说当你更新或删除主键表,那外键表也会跟随一 ...