2017年3月27日 星期一

IOS ScrollView

記錄一下UIScrollVIew 在autolayout的時候遇到不少問題
UIScrollVIew 跟一般的View不太一樣,它還有一個contentSize的概念
什麼是contentSize?contentSize 可以讓scrollView知道要滑動的內容距離有多少 
而contentSize 會根據UIScrollView他所包含的子視圖來計算。


舉個例子
放一個ScrollVIew 到畫面上,設定Constraints(top,bottom,leading,trailing)都貼齊邊界


之後我們在這個scrollVIew中放入一個imageView設定他的Constraints




一般來說這樣設定應該就沒問題了,但是在UIScrollView上會發現出現問題



這是什麼意思呢?剛剛說過scrollView有一個特別的屬性contentSize ,contentSize是由scrollView中的子視圖決定,照理說我們設定了寬高,contentSize不就可以確定了嗎?
其實是沒辦法的,contentSize雖然知道imageVIew的寬高,但它不知道imageView距離邊界的距離有多遠,所以它無法決定contentSize到底要有多大,只要設定右邊和下邊的距離後錯誤就消失了。

在看另外一種情況



也無法像一般我們會用與四邊距離要決定View的寬高,因為contentSize是根據子視圖決定,
而現在子視圖是依據contentSize決定,變成互相依賴。

所以現在知道要在scrollVIew中添加子視圖constraint需要以下幾個要求
1. 子視圖不但要確定自己大小,也要確定與邊界之間的距離。
2. 子視圖不能依賴與scrollView有關的佈局。





沒有留言:

張貼留言