UIScrollView 類常用屬性方法
[java] view plaincopy
CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ;
UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ];
當你創建完滾動視圖后,你可以將另一個視圖的內容粘合到滾動視圖的空白頁上。這回創建一個滾動的內容窗口:
[java] view plaincopy
[ scrollView addSubview:myView];
你必須給出內容的實際大小,這樣滾動視圖才知道滾動的范圍:
[java] view plaincopy
scrollView.contentSize = myView.frame.size;
要開啟縮放功能需要調整視圖的兩個屬性,分別是maxinumZoomScale 和 mininumZoomScale 。這樣就可以允許用戶使用捏合手勢調整內容大小:
[java] view plaincopy
scrollView.maxinumZoomScale = 2.0;//允許放大2倍
scrollView.mininumZoomScale = 0.5;//允許放大到0.5倍
要打開縮放功能,你還需要增加一個UIScrollViewDelegate 代理,通過一個名為 viewForZoomingScrollView
的方法做出響應。這個方法會返回進行縮放時所使用的 UIView 對象:
[java] view plaincopy
scrollView.delegate = self;
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView{
<span style="white-space:pre"> </span>retutn myView;
}
Tips:對于大規模數據,你可能會在最初使用一個低于實際大小(1.0)的縮放比例,讓用戶可以平滑地進行放大。
二、屬性
除了上面用到的縮放屬性外,滾動視圖還有會讓你多其他屬性,可以對現實內容的行為進行微調。你可以對 UIScrollView 類進行多方位定制。下面這些屬性是最常用的。
1.indicatorStyle
指定你希望使用的滾動條指示器的類型。默認行為是在白邊界上繪制黑色的滾動條,這在大多數背景下都適用。可用風格如下:
[java] view plaincopy
UIScrollViewIndicatorStyleDefault
UIScrollViewIndicatorStyleBlack
UIScrollViewIndicatorStyleWhite
2.contentOffset
一個CGPoint結構,其中包含有要顯示內容相對于窗口左上角的偏移量。默認是從0×0開始的,但是你也可以將顯示內容放在其他位置。
3.directionalLockEnabled
默認行為是允許用戶同時進行橫向和縱向的滾動。將這個屬性設置為YES會導致將用戶的滾動行為鎖定成只允許橫向或縱向進行,具體方向由初始姿態決定。
4.bounces
當用戶抵達滾動區域邊緣時,這個功能允許用戶稍微拖動到邊界外一點。當用戶松開手指后,這個區域會像個橡皮筋一樣,彈回到原位,給用戶一個可見的提示,表示他已經到達了文檔開始或結束位置。如果不想讓用戶的滾動范圍能夠超出可見內容,可以將這個屬性設置為NO。
5.bouncesZoom
類似于bounces 選項,這個方法可以令用戶的縮放操作超出***或最小縮放級別,然后彈回到范圍以內。如果你不想讓用戶能夠超出你指定的范圍進行縮放,將這個屬性設置為NO。
6.pagingEnabled
當開啟了分頁功能時,滾動視圖被分割成多個獨立區段,二用戶的滾動體驗則變成了頁面翻轉,你可以用這個屬性來進行頁面翻轉。
三、委托方法
可以賦予滾動視圖一個委托,下列委托方法會在特定時刻收到通知。
[java] view plaincopy
-(void)scrollViewDidScroll:(UIScrollView*)scrollView;//會在視圖滾動時收到通知。包括一個指向被滾動視圖的指針,從中可以讀取contentOffset屬性以確定其滾動到的位置。
[java] view plaincopy
-(void)scrollViewWillBeginDragging:(UISCrollView*)scrollView;//當用戶***在某個方向上進行拖動時得到通知。這個方法會得到被作為參數傳遞的滾動視圖指針,也同樣可以從中讀取 contentOffset 屬性。
[java] view plaincopy
-(void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate;
//當用戶抬起拖動到手指時得到通知。還會得到一個布爾值,知名報告滾動視圖***位置之前,是否需要減速。
[java] view plaincopy
-(void)scrollViewWillBeginDecelerate:(UIScrollView*)scrollView;//當用戶抬起手指而視圖需要繼續移動時,會收到通知。這個方法可以用來讀取 contentOffset屬性,從而判斷出當用戶抬起手指錢***一次滾動到的位置,雖然這個位置并不會使滾動條的最終停止位置。
[java] view plaincopy
-(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView;//當上面提到的減速完畢、滾動視圖停止時得到通知。收到這個通知的時刻,滾動視圖的contentOffset屬性會反映出滾動條最終停止的位置。
[java] view plaincopy
-(void)scrollViewDidEndZooming:(UIScrollview*)scrollView withView:(UIView*)view atScale:(float)scale;//當用戶對內容進行縮放時,會收到通知。縮放比例表示為一個浮點值,會作為參數傳遞進來。
[java] view plaincopy
-(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 控制控件滾動到頂部