前期要实现 一个自适应的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. Lua 学习之基础篇七<Lua Module,Package介绍>

    Lua 之Module介绍 包管理库提供了从 Lua 中加载模块的基础库. 只有一个导出函数直接放在全局环境中: [require]. 所有其它的部分都导出在表 package 中. require ...

  2. Android系统输入事件分发详解

    什么是输入事件? 我们知道,运行android系统的设备本质上是一台计算机,使用者在和计算机进行交互的时候可以抽象成简单的对计算机的输入和输出(IO).那么对于运行在计算机上的操作系统来说,操作系统在 ...

  3. Java 相同类型强制转换异常

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u010750497/article/det ...

  4. scapy2 爬取全站,以及使用post请求

    前情提要: 一:scrapy 爬取妹子网 全站  知识点: scrapy回调函数的使用 二: scrapy的各个组件之间的关系解析 Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网 ...

  5. How to connect oracle databse

    1. 下載客戶端Oracle Developer Tools for Visual Studio_32bit 安裝后通過配置tnsnames.ora指定連接 C:\app\user name\prod ...

  6. number-progression-network

    T1给定一个 $n$ 位的数字串,要求修改若干位,使得至少包含 $k$ 个相同的数位,最小化代价. Sol 考虑枚举那种数字作为答案,选代价前 $k$ 小的修改成目标数字. 有一部分的数字是必须修改的 ...

  7. ZOJ 3182 HDU 2842递推

    ZOJ 3182 Nine Interlinks 题目大意:把一些带标号的环套到棍子上,标号为1的可以所以操作,标号i的根子在棍子上时,只有它标号比它小的换都不在棍子上,才能把标号为i+1的环,放在棍 ...

  8. windows问题集合

    1.windows创建内核对象时系统会创建内核数据块,我们通过什么方式去创建,打开,操作这些数据块呢?微软是如何做的?如果是你又会如何做?(提示:内核句柄) 2.进程  发展历史(系统方面发展) 答: ...

  9. Ubuntu 14.04 64bit中永久添加DNS的方法

    第一种方法修改如下文件,默认是空的sudo vim /etc/resolvconf/resolv.conf.d/base在里面加入你想添加的DNS服务器,一行一个nameserver 114.114. ...

  10. 虚拟机安装WIN7教程

    1.去下载win7原装镜像,推荐去官方网站下载:https://msdn.itellyou.cn/ 也可以直接使用Win7系统和激活工具链接:https://pan.baidu.com/s/1SJSE ...