UIScrollView自動(dòng)布局問(wèn)題

首先,我們新建一個(gè)項(xiàng)目演示一下在Storyboard/xib中利用自動(dòng)布局給UIScrollView子控件添加約束會(huì)出現(xiàn)的問(wèn)題:

1.我們往Main.storyboard中拖入一個(gè)UIScrollView,并給其設(shè)置一個(gè)藍(lán)色背景方便我們調(diào)試,然后設(shè)置水平垂直方向居中,寬高各為200的約束:

QQ20151109-0.png

QQ20151109-3.png

2.運(yùn)行程序效果如下:

QQ20151109-2.png

3.接下來(lái)我們給這個(gè)UIScrollView添加一個(gè)UITextField子控件并設(shè)置其約束:上部間距50,左邊間距20,寬度100,高度30:

QQ20151109-1.png

一般給控件設(shè)置以上四個(gè)約束即可,但是這里我們發(fā)現(xiàn)界面報(bào)錯(cuò):

QQ20151109-0.png

其實(shí),這是由于UIScrollView的特殊性造成的,雖然這樣也可以運(yùn)行程序,但是一般不推薦這樣做,如果UIScrollView中存在很多子控件可能會(huì)造成很多未知錯(cuò)誤.

那么怎么解決這個(gè)問(wèn)題呢?

首先,我們需要添加一個(gè)UIView類(lèi)型的控件成為UIScrollView的唯一子控件,并設(shè)置其上下左右間距都為0,這時(shí)候我們發(fā)現(xiàn)設(shè)置完四個(gè)約束后仍然會(huì)報(bào)錯(cuò),這里我們就來(lái)解釋一下UIScrollView的特殊性:其實(shí)UIScrollView要想實(shí)現(xiàn)滾動(dòng),必須設(shè)置其滾動(dòng)區(qū)域contentSize,而這里UIScrollView的滾動(dòng)區(qū)域是由其子控件的內(nèi)容決定的,所以這里我們先添加一個(gè)UIView成為UIScrollView的唯一子控件,并設(shè)置其上下左右約束均為0,然后設(shè)置UIView的寬度為300(這個(gè)高度就是UIScrollView的內(nèi)容寬度: contentSize.weight),在設(shè)置垂直居中,然后運(yùn)行程序就會(huì)看到UIScrollView可以左右滾動(dòng)了.

QQ20151109-0.png

QQ20151109-1.png

UIScrollView.gif

同理,如果要想上下滾動(dòng)就將UIView的高度約束設(shè)置成300(這個(gè)高度就是UIScrollView的內(nèi)容高度: contentSize.height),水平居中就可以了.

QQ20151109-2.png

QQ20151109-3.png

如果要想上下左右都可以滾動(dòng),那么就將寬高約束都設(shè)置為300.不用設(shè)置水平和垂直居中.

QQ20151109-4.png

4.接下來(lái)所有的控件都添加到UIView中即可利用自動(dòng)布局來(lái)設(shè)置約束.

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

相關(guān)閱讀更多精彩內(nèi)容

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