ios之UIScrollerView滾動檢視
UIScrollView 類負責所有基於 UIKit 的滾動操作。
一、建立
- CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ;
- UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ];
- [ scrollView addSubview:myView];
- scrollView.contentSize = myView.frame.size;
- scrollView.maxinumZoomScale = 2.0;//允許放大2倍
- scrollView.mininumZoomScale = 0.5;//允許放大到0.5倍
的方法做出響應。這個方法會返回進行縮放時所使用的 UIView 物件:
- scrollView.delegate = self;
- - (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView{
- <span style="white-space:pre"> </span>retutn myView;
- }
二、屬性
除了上面用到的縮放屬性外,滾動檢視還有會讓你多其他屬性,可以對現實內容的行為進行微調。你可以對 UIScrollView 類進行多方位定製。下面這些屬性是最常用的。
1.indicatorStyle
指定你希望使用的滾動條指示器的型別。預設行為是在白邊界上繪製黑色的滾動條,這在大多數背景下都適用。可用風格如下:
- UIScrollViewIndicatorStyleDefault
- UIScrollViewIndicatorStyleBlack
- UIScrollViewIndicatorStyleWhite
一個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 | 控制控制元件滾動到頂部 |