你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> ios之UIScrollerView滾動視圖總結

ios之UIScrollerView滾動視圖總結

編輯:IOS開發綜合

UIScrollView 類負責所有基於 UIKit 的滾動操作。

一、創建

CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ; 
UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ]; 

當你創建完滾動視圖後,你可以將另一個視圖的內容粘合到滾動視圖的空白頁上。這回創建一個滾動的內容窗口:

[ scrollView addSubview:myView]; 

你必須給出內容的實際大小,這樣滾動視圖才知道滾動的范圍:

scrollView.contentSize = myView.frame.size; 

要開啟縮放功能需要調整視圖的兩個屬性,分別是maxinumZoomScale 和 mininumZoomScale 。這樣就可以允許用戶使用捏合手勢調整內容大小:

scrollView.maxinumZoomScale = 2.0;//允許放大2倍 
scrollView.mininumZoomScale = 0.5;//允許放大到0.5倍 

要打開縮放功能,你還需要增加一個UIScrollViewDelegate 代理,通過一個名為 viewForZoomingScrollView
的方法做出響應。這個方法會返回進行縮放時所使用的 UIView 對象:

scrollView.delegate = self; 
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView{ 
 retutn myView; 
} 

Tips:對於大規模數據,你可能會在最初使用一個低於實際大小(1.0)的縮放比例,讓用戶可以平滑地進行放大。

二、屬性

除了上面用到的縮放屬性外,滾動視圖還有會讓你多其他屬性,可以對現實內容的行為進行微調。你可以對 UIScrollView 類進行多方位定制。下面這些屬性是最常用的。

1.indicatorStyle

指定你希望使用的滾動條指示器的類型。默認行為是在白邊界上繪制黑色的滾動條,這在大多數背景下都適用。可用風格如下:

  • UIScrollViewIndicatorStyleDefault 
  • UIScrollViewIndicatorStyleBlack 
  • UIScrollViewIndicatorStyleWhite 

2.contentOffset

一個CGPoint結構,其中包含有要顯示內容相對於窗口左上角的偏移量。默認是從0×0開始的,但是你也可以將顯示內容放在其他位置。

3.directionalLockEnabled

默認行為是允許用戶同時進行橫向和縱向的滾動。將這個屬性設置為YES會導致將用戶的滾動行為鎖定成只允許橫向或縱向進行,具體方向由初始姿態決定。

4.bounces

當用戶抵達滾動區域邊緣時,這個功能允許用戶稍微拖動到邊界外一點。當用戶松開手指後,這個區域會像個橡皮筋一樣,彈回到原位,給用戶一個可見的提示,表示他已經到達了文檔開始或結束位置。如果不想讓用戶的滾動范圍能夠超出可見內容,可以將這個屬性設置為NO。

5.bouncesZoom

類似於bounces 選項,這個方法可以令用戶的縮放操作超出最大或最小縮放級別,然後彈回到范圍以內。如果你不想讓用戶能夠超出你指定的范圍進行縮放,將這個屬性設置為NO。

6.pagingEnabled

當開啟了分頁功能時,滾動視圖被分割成多個獨立區段,二用戶的滾動體驗則變成了頁面翻轉,你可以用這個屬性來進行頁面翻轉。

三、委托方法

可以賦予滾動視圖一個委托,下列委托方法會在特定時刻收到通知。

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

//會在視圖滾動時收到通知。包括一個指向被滾動視圖的指針,從中可以讀取contentOffset屬性以確定其滾動到的位置。 
-(void)scrollViewWillBeginDragging:(UISCrollView*)scrollView;
//當用戶首次在某個方向上進行拖動時得到通知。這個方法會得到被作為參數傳遞的滾動視圖指針,也同樣可以從中讀取 contentOffset 屬性。
-(void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate; 
//當用戶抬起拖動到手指時得到通知。還會得到一個布爾值,知名報告滾動視圖最後位置之前,是否需要減速。 
-(void)scrollViewWillBeginDecelerate:(UIScrollView*)scrollView;
//當用戶抬起手指而視圖需要繼續移動時,會收到通知。這個方法可以用來讀取 contentOffset屬性,從而判斷出當用戶抬起手指錢最後一次滾動到的位置,雖然這個位置並不會使滾動條的最終停止位置。 
-(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView;
//當上面提到的減速完畢、滾動視圖停止時得到通知。收到這個通知的時刻,滾動視圖的contentOffset屬性會反映出滾動條最終停止的位置。 
-(void)scrollViewDidEndZooming:(UIScrollview*)scrollView withView:(UIView*)view atScale:(float)scale;
//當用戶對內容進行縮放時,會收到通知。縮放比例表示為一個浮點值,會作為參數傳遞進來。 
-(BOOL)scrollViewShouldScrollToTop:(UIScrollView*)scrollView; 
-(void)scrollViewDidScrollToTop:(UIScrollView*)scrollView; 
//當用戶點出iPhone狀態條時,滾動視圖委托可以決定視圖是否滾動回到開頭。 

OK,都總結完了,後面會寫一個頁面翻轉的例子敬請關注。

屬性和作用

  • 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 控制控件滾動到頂部

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved