轉載--iOS,UIScrollView的相關屬性,方法

来源:http://www.cnblogs.com/kkkore/archive/2016/09/12/5866255.html
-Advertisement-
Play Games

http://blog.sina.com.cn/s/blog_45e2b66c01019wfg.html UIScrollView 快速滑動過程中,滾動速度過快,可以通過屬性decelerationRate控制。 decelerationRate範圍為0 1,一般0 0.5沒有多少區別。0也沒有問題 ...


 

http://blog.sina.com.cn/s/blog_45e2b66c01019wfg.html

 

UIScrollView 快速滑動過程中,滾動速度過快,可以通過屬性decelerationRate控制。

 

decelerationRate範圍為0-----1,一般0---0.5沒有多少區別。0也沒有問題。

 

decelerationrate 設置當它減速時的速度,0.1f的話,很快就停下來,1就正常速度停下,即滑動一定距離才停.
下麵附屬UIScrollView屬性: 轉自  http://blog.csdn.net/aaajj/article/details/6872038   在滾動過程當中,其實是在修改原點坐標

當手指觸摸後, 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  設置滾動條的位置   http://blog.csdn.net/diyagoanyhacker/article/details/6062498       / *******************************/

UIScrollView的屬性總結

屬性 作用
CGPoint contentOffSet-------------------------- 監控目前滾動的位置
CGSize contentSize------------------------------ 滾動範圍的大小
UIEdgeInsets contentInset--------------------- 視圖在scrollView中的位置
id<UIScrollerViewDelegate> delegate------ 設置協議
BOOL directionalLockEnabled---------------- 指定控制項是否只能在一個方向上滾動
BOOL bounces------------------------------------ 控制控制項遇到邊框是否反彈
BOOL alwaysBounceVertical------------------ 控制垂直方向遇到邊框是否反彈
BOOL alwaysBounceHorizontal-------------- 控制水平方向遇到邊框是否反彈
BOOL pagingEnabled--------------------------- 控制控制項是否整頁翻動
BOOL scrollEnabled----------------------------- 控制控制項是否能滾動
BOOL showsHorizontalScrollIndicator------ 控制是否顯示水平方向的滾動條
BOOL showsVerticalScrollIndicator---------- 控制是否顯示垂直方向的滾動條
UIEdgeInsets scrollIndicatorInsets----------- 指定滾動條在scrollerView中的位置
UIScrollViewIndicatorStyle   indicatorStyle- 設定滾動條的樣式
float decelerationRate--------------------------- 改變scrollerView的減速點位置
BOOL tracking------------------------------------- 監控當前目標是否正在被跟蹤
BOOL dragging------------------------------------ 監控當前目標是否正在被拖拽
BOOL decelerating------------------------------- 監控當前目標是否正在減速
BOOL delaysContentTouches----------------- 控制視圖是否延時調用開始滾動的方法
BOOL canCancelContentTouches------------ 控制控制項是否接觸取消touch的事件
float minimumZoomScale----------------------- 縮小的最小比例
float maximumZoomScale---------------------- 放大的最大比例
float zoomScale----------------------------------- 設置變化比例
BOOL bouncesZoom---------------------------- 控制縮放的時候是否會反彈
BOOL zooming------------------------------------ 判斷控制項的大小是否正在改變
BOOL zoomBouncing--------------------------- 判斷是否正在進行縮放反彈
BOOL scrollsToTop------------------------------- 控制控制項滾動到頂部

這裡把UIScrollView的幾個要點總結下:

從你的手指touch屏幕開始,scrollView開始一個timer,如果:

1.  150ms內如果你的手指沒有任何動作,消息就會傳給subView。

2.  150ms內手指有明顯的滑動(一個swipe動作),scrollView就會滾動,消息不會傳給subView,這裡就是產生問題二的原因。

3. 150ms內手指沒有滑動,scrollView將消息傳給subView,但是之後手指開始滑動,scrollView傳送touchesCancelled消息給subView,然後開始滾動。

觀察下tableView的情況,你先按住一個cell,cell開始高亮,手不要放開,開始滑動,tableView開始滾動,高亮取消。

 

delaysContentTouches的作用:

這個標誌預設是YES,使用上面的150ms的timer,如果設置為NO,touch事件立即傳遞給subView,不會有150ms的等待。

 

cancelsTouches的作用:

這個標準預設為YES,如果設置為NO,這消息一旦傳遞給subView,這scroll事件不會再發生。

 

 

 

UIScrollViewDelegate  協議

//scrollView滾動時,就調用該方法。任何offset值改變都調用該方法。即滾動過程中,調用多次

 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

    // 從中可以讀取contentOffset屬性以確定其滾動到的位置。

    // 註意:當ContentSize屬性小於Frame時,將不會出發滾動

  

}

 

 

// 當開始滾動視圖時,執行該方法。一次有效滑動(開始滑動,滑動一小段距離,只要手指不鬆開,只算一次滑動),只執行一次。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{}

 

// 滑動scrollView,並且手指離開時執行。一次有效滑動,只執行一次。

// 當pagingEnabled屬性為YES時,不調用,該方法

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{}

 

// 滑動視圖,當手指離開屏幕那一霎那,調用該方法。一次有效滑動,只執行一次。

// decelerate,指代,當我們手指離開那一瞬後,視圖是否還將繼續向前滾動(一段距離),經過測試,decelerate=YES

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{}

 

// 滑動減速時調用該方法。

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{}

 

// 滾動視圖減速完成,滾動將停止時,調用該方法。一次有效滑動,只執行一次。

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{}

 

// 當滾動視圖動畫完成後,調用該方法,如果沒有動畫,那麼該方法將不被調用

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{}

 

 

// 返回將要縮放的UIView對象。要執行多次

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{}

// 當scrollView縮放時,調用該方法。在縮放過程中,回多次調用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView{}

// 當將要開始縮放時,執行該方法。一次有效縮放,就只執行一次。

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{}

// 當縮放結束後,並且縮放大小回到minimumZoomScale與maximumZoomScale之間後(我們也許會超出縮放範圍),調用該方法。

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{}

 

 

// 指示當用戶點擊狀態欄後,滾動視圖是否能夠滾動到頂部。需要設置滾動視圖的屬性:_scrollView.scrollsToTop=YES;

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{}

 

// 當滾動視圖滾動到最頂端後,執行該方法

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{

 

}

 

本文出自 “聖殿騎士團的iOS” 博客,請務必保留此出處http://10646127.blog.51cto.com/10636127/1690221

     
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 創建非同步樹形菜單 <ul class="easyui-tree" id="treeMenu"> </ul> $(function(){ $('#treeMenu').tree({ url:'tree_data.json' //url的值是非同步獲取數據的頁面地址 }); }); $result = [ ...
  • 1.ele.getAttribute(attributeName); 返回元素的指定屬性值,如果元素沒有該屬性,則返回null 2.ele.setAttribute(attributeName,value); 為元素指定屬性設置值,如果沒有該屬性,則創建該屬性,並賦值 3.在IE 7以及更早版本部分 ...
  • ...
  • UEditor組件是百度提供的一套開源的web線上所見即所得富文本編輯器,具有輕量,可定製,註重用戶體驗等特點,基於MIT協議,功能很強大。最近在使用的過程中發現其中上傳的圖片(或者插入已有的表情包圖片)都無法正常縮放,選中圖片,用滑鼠點擊並拖動圖片邊沿的小標簽,圖片只能縮小不能放大。嘗試過很多方法 ...
  • 基本用法 先看一下最簡單的一個實現,代碼如下: 我們可以通過如下的方式來調用: 大家可能看到了,每次用的時候都要new一下,也就是說每個實例在記憶體里都是一份copy,如果你不需要傳參數或者沒有一些特殊苛刻的要求的話,我們可以在最後一個}後面加上一個括弧,來達到自執行的目的,這樣該實例在記憶體中只會存在 ...
  • API-https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/index.html#//apple_ref/doc/uid/TP40008079 一、同步、非同步和 ...
  • 有時應用程式需要能夠進行自定義繪圖。我們可以依靠兩個不同的庫來滿足我們的繪圖需要。一個庫是Quartz 2D,它是Core Graphics框架的一部分;另一個庫是OpenGL ES,它是跨平臺的圖形庫。OpenGL ES是跨平臺圖形庫OpenGL的簡化版。OpenGL ES是OpenGL的一個子集 ...
  • Android 樣式 android中的樣式和CSS樣式作用相似,都是用於為界面元素定義顯示風格,它是一個包含一個或者多個view控制項屬性的集合。如:需要定義字體的顏色和大小。 在CSS中是這樣定義的: 可以像這樣使用上面的css樣式:<div class="wu">wuyudong‘blog</d ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...