概要
在Xcode11中對UIScrollView在Xib中的布局,蘋果引入了Content Layout guide和Frame Layout Guide。我們拖動(dòng)一個(gè)UIScrollView到Xib中,默認(rèn)就會(huì)有Content Layout guide和Frame Layout Guide兩個(gè)選項(xiàng)嵌入。如下圖:
這時(shí)我們可以選擇兩種方式來進(jìn)行布局:
(1)將右邊檢查器中Content Layout Guides的勾勾去掉,這樣Content Layout guide和Frame Layout Guide在UIScrollView中就會(huì)自動(dòng)消失,這時(shí)候布局就跟以前的Xcode版本一樣,網(wǎng)上教程有很多,不在本文的討論里面
(2)保留Content Layout guide和Frame Layout Guide,分別對它們進(jìn)行設(shè)置,完成UIScrollView的內(nèi)容布局,本文則講解這種方式的布局步驟進(jìn)行實(shí)現(xiàn)
實(shí)現(xiàn)步驟
最終實(shí)現(xiàn)目的
要將這樣的UIScrollView成功布局,我們要完成兩個(gè)部分:
(1)完成UIScrollView自身相對于父視圖的布局設(shè)置,這個(gè)是Frame Layout Guide的部分
(2)完成UIScrollView滾動(dòng)內(nèi)容的布局設(shè)置,這個(gè)是Content Layout guide的部分
在下面,我們就一步步就完成這些設(shè)置
一、在視圖控制器中拖入一個(gè)UIScrollView并設(shè)置約束
拖入一個(gè)UIScrollView到ViewController中,并分別設(shè)置它相對于父視圖的約束為0,如下圖
二、拖入一個(gè)UIView到UIScrollView中,并設(shè)置它的約束
拖入一個(gè)UIView到UIScrollView中,作為內(nèi)容顯示視圖,Autolayout將使用這個(gè)View的寬高來計(jì)算UIScrollView的滾動(dòng)范圍,并分別設(shè)置它相對于Content Layout guide的約束為0,具體步驟為:左鍵選中View,右鍵拖動(dòng)它到Content Layout guide上,按住shift鍵,將上下左右都給選中,如果xcode默認(rèn)了當(dāng)前的相對數(shù)據(jù),在右邊將它手動(dòng)改為0,操作如下圖
注意上圖中右邊紅框區(qū)域,默認(rèn)的一般不是0,要將它手動(dòng)修改為0
接下來,我們將View改名為ContentView,方便標(biāo)識(shí)
三、設(shè)置內(nèi)容滾動(dòng)范圍
上面的步驟設(shè)置之后,我們會(huì)發(fā)現(xiàn)紅線仍然存在,這是因?yàn)锳utoLayout仍然不知道內(nèi)容的滾動(dòng)范圍是多大,我們接下來設(shè)置滾動(dòng)范圍,具體步驟為,左鍵選中ContentView,右鍵拖動(dòng)到Frame Layout Guide
在設(shè)置完成后,我們會(huì)發(fā)現(xiàn),所有的紅線都不存在了,而且關(guān)于滾動(dòng)視圖的范圍都已經(jīng)設(shè)置好了,如果有變化,可以像以前一樣將約束拖線到代碼中進(jìn)行設(shè)置
接下來關(guān)于內(nèi)容的設(shè)置,就和以前的一樣了,像以前一樣進(jìn)行設(shè)置即可
四、Xcode12補(bǔ)充
在Xcode12中,按照之前設(shè)置內(nèi)容滾動(dòng)范圍時(shí),出現(xiàn)了寬度只有一半的情況,如下圖所示

這是因?yàn)樵赬code12中,設(shè)置contentView的寬度和Frame Layout Guide的寬度equal Widths時(shí),默認(rèn)給設(shè)置為一個(gè)0.5左右的小數(shù),我們把它更改為1即可以達(dá)到效果

我們把它設(shè)置為1,即可達(dá)到效果
