Android中相關ScrollView原理 阿新 • • 發佈:2019-02-12 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: 兩個方法,另外 maximumZoomScale和minimumZoomScale兩個屬性要不一樣 幾個屬性 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 設定滾動條的位置