swift 第七课 xib 约束的优先级

时间:2022-11-26 11:11:19

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

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

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

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

现在开始行动……

首先截个图好了:

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

swift 第七课 xib 约束的优先级        swift 第七课 xib 约束的优先级     

Content Hugging Priority

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

Content Compression Resistance Priority

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

 

那么,试验开始:

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

 

swift 第七课 xib 约束的优先级          swift 第七课 xib 约束的优先级         swift 第七课 xib 约束的优先级

 

总结:抗压缩能力 :

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

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

 

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

 

swift 第七课 xib 约束的优先级          swift 第七课 xib 约束的优先级      swift 第七课 xib 约束的优先级

 

总结: 抗拉伸能力:

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

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

 

好了,约束的优先级,粗略的搞懂了 这几个问题,现在就可以做几个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 约束的优先级        swift 第七课 xib 约束的优先级