UIScrollView 原理(轉載)

scroll view 原理

在滾動過程當中,其實是在修改原點座標

 

當手指觸摸後, scroll view會暫時攔截觸摸事件,使用一個

計時器,假如在計時器到點後,沒有發生手指移動事件,

那麼,scroll view發送tracking events到被點擊的subview

假如在計時器到點前,發生了移動事件,那麼 scroll view 取消tracking

自己發生滾動

 

子類可以重載touchesShouldBegin:withEvent:inContentView: 決定自己是否接收touch事件

pagingEnabled當值是YES,會自動滾動到subview的邊界,默認是NO

touchesShouldCancelInContentView: 開始發送tracking messages消息給subview的時候

調用這個方法,決定是否發送tracking messages消息到subview,假如返回NO,發送,YES則不發送

假如 canCancelContentTouches屬性是NO,則不調用這個方法

來影響如何處理滾動手勢

 

scroll view還處理縮放和平移手勢

要實現縮放和平移,必須實現委託viewForZoomingInScrollView:

scrollViewDidEndZooming:withView:atScale:

兩個方法,另外 maximumZoomScaleminimumZoomScale兩個屬性要不一樣

 

幾個屬性

tracking

touch後還沒有拖動的時候,值是YES,否則NO

 

 

zoomBouncing

當內容放大到最大或者最小的時候,值是YES,否則NO

 

 

zooming

當正在縮放的時候,值是YES,否則NO

 

decelerating

 

當滾動後,手指放開,但是還在繼續滾動中,這個時候是 YES,其他是NO

 

decelerationRate

 

設置手指放開後的減速率

 

 

maximumZoomScale

一個浮點數,表示能放最大的倍數

 

 

minimumZoomScale

一個浮點數,表示能縮最小的倍數

 

 

pagingEnabled

當值是YES,會自動滾動到subview的邊界,默認是NO

 

 

scrollEnabled

決定是否可以滾動

 

delaysContentTouches

 

是個布爾值,當值是YES的時候,用戶觸碰開始,scroll view要延遲一會,看看是否用戶有意圖滾動,假如滾動了,那麼捕捉touch-down事件,否則就不捕捉假如值是NO,當用戶觸碰, scroll view會立即觸發touchesShouldBegin:withEvent:inContentView:, 默認是YES

 

canCancelContentTouches

當值是YES的時候,用戶觸碰後,然後在一定時間內沒有移動,scrollView發送tracking events,然後用戶移動手指足夠長度觸發滾動事件,這個時候,scrollView發送了touchesCancelled:withEvent: subview,然後scroView開始滾動

假如值是NO,scrollView發送tracking events後,就算用戶移動手指,scrollView也不會滾動

 

contentSize

裏面內容的大小,也就是可以滾動的大小,默認是0,沒有滾動效果。

 

showsHorizontalScrollIndicator

滾動時,是否顯示水平滾動條

 

showsVerticalScrollIndicator

滾動時,是否顯示垂直滾動條

 

bounces

默認是yes,就是滾動超過邊界,會反彈有反彈回來的效果,假如是 NO,那麼滾動到達邊界,那麼會連忙停止

 

bouncesZoom

bounces類似,區別在於,這個效果反映在縮放上面,假如縮放超過最大縮放,那麼會反彈效果,假如是NO,則到達最大或者最小的時候,立即停止

 

directionalLockEnabled

默認是NO, 可以在垂直和水平方向同時運動當值是YES, 假如一開始是垂直或者是水平運動,那麼接下來會鎖定另外一個方向的滾動假如一開始是對角方向滾動,則不會禁止某個方向

 

indicatorStyle

滾動條的樣式,基本只是設置顏色,總共3個顏色,默認,黑色的,白色的

 

scrollIndicatorInsets

設置滾動條的位置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章