前言
本文將給大家介紹AutoLayout的Content Compression Resistance,說通俗一點(diǎn)就是"視圖的抗壓縮優(yōu)先級(jí)".
一. 本篇重點(diǎn)介紹:Content Compression Resistance Priority
許多開發(fā)者可能對(duì)這個(gè)屬性比較陌生,同樣這個(gè)屬性對(duì)有intrinsic content size的控件(例如button搜锰,label)非常重要.
注:具有intrinsic content size的控件當(dāng)你設(shè)置內(nèi)容后,它可以根據(jù)內(nèi)容多少來調(diào)整自己大小
1. Content Compression Resistance Priority:
視圖抗壓縮優(yōu)先級(jí),
值越小,視圖越容易被壓縮
2. 使用場(chǎng)景:
當(dāng)一個(gè)視圖上有多個(gè)intrinsic content size的子視圖動(dòng)態(tài)尺寸,并且子視圖可能超出父視圖區(qū)域時(shí),此屬性可控制哪些視圖被內(nèi)容被優(yōu)先壓縮.使其不超出父視圖區(qū)域.
3. Content Compression Resistance Priority在約束界面如下位置:
二. 代碼示例:
1.新建工程,我們添加一個(gè)固定大小的視圖view(此view已添加約束,大小固定),在這個(gè)view上放2個(gè)label,分別為紅綠,分別對(duì)其添加如下約束:
紅label約束:上0,左0,下0
綠label約束:上0,左0,下0,右0
均不給寬度約束,寬度由label文字多少自己決定,
此時(shí)你會(huì)發(fā)現(xiàn),添加完以上約束后,會(huì)報(bào)下面錯(cuò)誤:
這個(gè)錯(cuò)誤的意思是說:
- 這2個(gè)label都是動(dòng)態(tài)寬度,寬度由文字多少?zèng)Q定(未添加寬度約束),
- 當(dāng)這2個(gè)label實(shí)際寬度之和小于父view寬度時(shí),AutoLayout不知道優(yōu)先拉伸哪個(gè)label
- 當(dāng)這2個(gè)label實(shí)際寬度之和大于父view寬度時(shí),AutoLayout不知道優(yōu)先壓縮哪個(gè)label
- 讓我們添加Content Hugging Priority抗拉伸和Content Compression Resistance抗壓縮優(yōu)先級(jí).
下面我們?cè)O(shè)置這兩個(gè)label文字都為"很長很很長很長很長的文字",使2個(gè)label寬度和超過父view寬度,
依次修改這2個(gè)label 橫向Content Compression Resistance Priority值分別為:
紅label: Horizontal: 750
綠label: Horizontal: 749
添加完成后錯(cuò)誤消失,效果如下:
因?yàn)榫G色label抗壓縮優(yōu)先級(jí)為749,(優(yōu)先級(jí)越小越容易被壓縮),小于紅色label,所有此時(shí)可以看到,當(dāng)二者總寬度超出父view寬度時(shí),綠色label優(yōu)先被壓縮了
下面我們來調(diào)換2個(gè)label橫向壓縮優(yōu)先級(jí)如下:
紅label: Horizontal: 749
綠label: Horizontal: 750
再來看下效果:
此時(shí),紅色label被壓縮了,紅色abel抗拉伸優(yōu)先級(jí)小于綠色label(越小越先被壓縮),此時(shí)AutoLayout壓縮紅色label內(nèi)容
三.小結(jié):
Content Compression Resistance 抗壓縮優(yōu)先級(jí)
優(yōu)先級(jí)越小,越先被壓縮,
此屬性在多個(gè)子視圖動(dòng)態(tài)尺寸,并子視圖內(nèi)容可能超出父視圖區(qū)域時(shí),會(huì)起到重要作用,后面會(huì)結(jié)合實(shí)例來詳細(xì)介紹.
代碼地址:https://github.com/CoderZhuXH/AutoLayout
相關(guān)閱讀
iOS AutoLayout進(jìn)階(一)Aspect Ratio
iOS AutoLayout進(jìn)階(二)Content Hugging Priority
iOS AutoLayout進(jìn)階(四)Content Hugging Priority和Content Compression Resistance Priority綜合運(yùn)用
iOS AutoLayout進(jìn)階(五)UITableViewCell自動(dòng)高度