【iOS開發】UIScrollView看不到內容、UIScrollView不能滑動

KyXu發表於2015-08-23

初學者第一次使用 UIScrollView 的時候,很可能會遇到 UIScrollView 滑動不了,或者明明新增了內容,卻看不到的問題。
這裡展示最簡潔、最常態化的一種在 UIScrollView 中新增可以滑動的 UIImageView 的案例。

上下文關係:程式碼中的“tipView”是通過 Storyboard 拖線到程式碼中繫結的 IBOutlet,已經在 self.view 裡面了。

設定 UIScrollView

這裡把 imageView 的 contentMode 設定為 AspectFill 來保證 image 可以填滿 imageView ,並且長寬比不改變。
容易犯的錯誤是通過 frame 來初始化 imageView,這是不必要也是不應該的。應該設定好你的圖片資源的大小,然後直接用圖片資源的frame 去設定 imageView 的 frame,當然這一步也是自動的。
接下來要確定 UIScrollView 的 contentSize,即它的內容、可滑動範圍。這也直接套用的圖片資源的 frame。

注意點1:必須保證 UIScrollView 的 contentSize 比它本身的 size要大,否則不可能滑動。

注意點2:現在 imageView 是 UIScrollView 的 subView,所以它的 frame 也是相對 UIScrollView 的,你想要讓它和 UIScrollView 剛好一樣高,就要把它的 frame 的 y 值設定為0,這也是為什麼我推薦你不管這個 y 值,讓它自動置為0。假如 UIScrollView 的 y 值為10,你再設定 imageView 的 y 值為10,那麼相對於螢幕來說,imageView 的 y 值是20。當它的 y 值大到一定程度,超出了 UIScrollView,你自然就看不到內容了。

更新:
如果你的 UIScrollView 老是在你不希望它滾動的方向的滾動,而且裡面的 imageView 還有可能錯位的話,在 viewDidLoad 方法中加入這句:

self.automaticallyAdjustsScrollViewInsets = false


相關文章