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上顯示圖片,但圖片是從網路上下載的,無法確定其大小,怎麼辦?還是有辦法的,此時就不設定