iOS AutoLayout進(jìn)階(三)Content Compression Resistance Priority

前言

本文將給大家介紹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在約束界面如下位置:
Content Compression Resistance.png

二. 代碼示例:

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ò)誤:


demo.png

這個(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文字都為"很長(zhǎng)很很長(zhǎng)很長(zhǎng)很長(zhǎng)的文字",使2個(gè)label寬度和超過父view寬度,
依次修改這2個(gè)label 橫向Content Compression Resistance Priority值分別為:

紅label: Horizontal: 750
綠label:  Horizontal: 749

添加完成后錯(cuò)誤消失,效果如下:


紅色-750,綠色-749.png

因?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

再來看下效果:


紅色-749,綠色-750.png

此時(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)高度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容