Xcode11、12 在Xib中進(jìn)行UIScrollView布局

概要

在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)嵌入。如下圖:

新加入的UIScrollView

這時(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á)到效果


約束0.5左右

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


完成效果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容