1. 程式人生 > >UIScrollView新增AutoLayout的ambiguous content size警告解決方法

UIScrollView新增AutoLayout的ambiguous content size警告解決方法

如果你在使用auto Layout 時看到這個警告,那無疑是給UIscrollView的subView設定的限制。我起初以為是少添加了的限制,確認之後,該有的都有了!至少如果是uiview的話,設定是對的,原來uiscrollView真是個特殊的控制元件,它有contentSize這個屬性!

什麼意思呢?我們都知道在使用uiscrollView時,我們會手動設定contentSize,但在使用storyBoard或xib時,如果不手動設定,auto Layout是怎麼自動設定contentSize呢?原來uiscrollView在使用auto Layout時,是會自動根據它的內容(subView)來自動確定contentSize的大小的,而subView又由自身的size和限制兩部分決定的,知道這個就好辦了。

我們知道,通過設定leading/trailing/top/bottom限制就可以確定控制元件的的大小和位置,而leading/trailing/top/bottom是相對於父控制元件(參照控制元件)的bounds(邊界)的。但是uiscrollView的leading/trailing/top/bottom是相對contentSize的邊界的,如果僅僅uiscrollView的subView的leading/trailing/top/bottom僅僅是確定了限制,空間的大小還是不知道的,導致contentSize無法確定。此時如果在設定subView的大小,則警告就消失了。

那問題又來了,如果我要在scrollView上顯示圖片,但圖片是從網路上下載的,無法確定其大小,怎麼辦?還是有辦法的,此時就不設定

subView的大小了,取而代之的是通過臨時的佔位尺寸來告訴 storyboard,不會印象執行時的尺寸,具體操作是設定size inspector的intrinsic size屬性為placeholder(圖片的最下面):