基本原理
其子類可以重載
touchesShouldBegin: withEvent: inContentView: 決定自己是否接收touch事件。
pagingEnabled: 當值是YES會自動滾動到subView的邊界,默認是NO。
touchesShouldCancelInContentView: 開始傳送tracking messages訊息給subView的時候會調用這個方法。以決定是否傳送tracking messages訊息到subView。假如返回NO,傳送。YES則不傳送。若是canCancelContentTouches屬性是NO,則不調用這個方法來影響如何處理滾動手勢。
ScrollView還可處理縮放和平移手勢,要實現這必須實現委託viewForZoomingInScrollView:和scrollViewDidEndZooming: withView: atScale:兩個方法。另外maximumZoomScale和minimumZoomScale兩個屬性要不一樣 。
常用屬性
maximumZoomScale 能放大的最大倍數,是浮點數。minimumZoomScale 能縮小的最小倍數,是浮點數。
pagingEnabled 是否自動滾動到subView邊界
scrollEnabled 是否可以滾動
contentSize 裡面內容的大小,即可以滾動的大小,默認是0,沒有滾動效果
showsHorizontalScrollIndicator 滾動時是否顯示水平滾動條
showsVerticalScrollIndicator 滾動時是否顯示垂直滾動條
bounces 默認是YES,就是滾動超過邊界會反彈,即有反彈回來的效果。若是NO,則滾動到達邊界會立刻停止
bouncesZoom 與bounces類似,只是反映在縮放效果上。
directionalLockEnabled 默認是NO,可以在垂直和水平方向同時運動。當值是YES時,視哪個方向開始則鎖定另外一個方向的滾動。
indicatorStyle 滾動條的樣式。總共3色:默認、黑、白
scrollIndicatorInsets 設定滾動條位置
tracking 當touch後還沒有拖動的時候是YES,否則NO
zoomBouncing 當內容放大到最大或者最小的時候值是YES,否則NO
zooming 當正在縮放的時候值是YES,否則NO
decelerating 當滾動後,手指放開但還在繼續滾動中。此時是YES,其它時候都是NO
decelerationRate 設定手指放開後的減速率
使用方法
初始化
一般的控制項初始化都是可以用alloc和init來初始化的。
UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0,0.0,self.view.frame.size.width, 400)];
關於控制項添加與初始化,建議都採用代碼調用合適的初始化方法來操作,雖然IB布局能夠節省時間,但不能很好的了解整個代碼執行流程。
委託方法
UIScrollView也要指定委託對象,該委託對象的控制器同樣也要遵循UIScrollViewDelegate協定,實現其相應的代理方法。
scrollViewDidScroll:
scrollViewWillBeginDragging:
scrollViewDidEndDragging:
scrollViewDidEndDecelerating:
屬性匯總
android:scrollbars
設定滾動條顯示。none(隱藏),horizontal(水平),vertical(垂直)。
android:scrollbarFadeDuration
設定滾動條淡出效果(從有到慢慢的變淡直至消失)時間,以毫秒為單位。Android2.2中滾動條滾動完之後會消失,再滾動又會出來,在1.5、1.6版本裡面會一直顯示著。
android:scrollbarSize
設定滾動條的寬度。
android:scrollbarStyle
設定滾動條的風格和位置。設定值:insideOverlay、insideInset、outsideOverlay、outsideInset
android:scrollbarThumbHorizontal
設定水平滾動條的drawable。
android:scrollbarThumbVertical
設定垂直滾動條的drawable.
android:scrollbarTrackHorizontal
設定水平滾動條背景(軌跡)的色drawable
android:soundEffectsEnabled
設定點擊或觸摸時是否有聲音效果