IOS開發UI展示之UIScrollView ──原理

來源:互聯網
上載者:User

 

UIScrollView 原理   轉貼:http://www.cocoachina.com/bbs/read.php?tid=40965
//作者:禚來強 iphone開發*****:79190809 郵箱:zhuolaiqiang@gmail.com轉帖請保留在滾動過程當中,其實是在修改原點座標

當手指觸摸後, 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
設定捲軸的位置

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.