前期要实现 一个自适应的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 添加的约束: