UIScrollView 類常用屬性方法
[java] view plaincopy
CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ;
UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ];
當(dāng)你創(chuàng)建完滾動(dòng)視圖后,你可以將另一個(gè)視圖的內(nèi)容粘合到滾動(dòng)視圖的空白頁(yè)上。這回創(chuàng)建一個(gè)滾動(dòng)的內(nèi)容窗口:
[java] view plaincopy
[ scrollView addSubview:myView];
你必須給出內(nèi)容的實(shí)際大小,這樣滾動(dòng)視圖才知道滾動(dòng)的范圍:
[java] view plaincopy
scrollView.contentSize = myView.frame.size;
要開(kāi)啟縮放功能需要調(diào)整視圖的兩個(gè)屬性,分別是maxinumZoomScale 和 mininumZoomScale 。這樣就可以允許用戶使用捏合手勢(shì)調(diào)整內(nèi)容大?。?/p>
[java] view plaincopy
scrollView.maxinumZoomScale = 2.0;//允許放大2倍
scrollView.mininumZoomScale = 0.5;//允許放大到0.5倍
要打開(kāi)縮放功能,你還需要增加一個(gè)UIScrollViewDelegate 代理,通過(guò)一個(gè)名為 viewForZoomingScrollView
的方法做出響應(yīng)。這個(gè)方法會(huì)返回進(jìn)行縮放時(shí)所使用的 UIView 對(duì)象:
[java] view plaincopy
scrollView.delegate = self;
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView{
<span style="white-space:pre"> </span>retutn myView;
}
Tips:對(duì)于大規(guī)模數(shù)據(jù),你可能會(huì)在最初使用一個(gè)低于實(shí)際大小(1.0)的縮放比例,讓用戶可以平滑地進(jìn)行放大。
二、屬性
除了上面用到的縮放屬性外,滾動(dòng)視圖還有會(huì)讓你多其他屬性,可以對(duì)現(xiàn)實(shí)內(nèi)容的行為進(jìn)行微調(diào)。你可以對(duì) UIScrollView 類進(jìn)行多方位定制。下面這些屬性是最常用的。
1.indicatorStyle
指定你希望使用的滾動(dòng)條指示器的類型。默認(rèn)行為是在白邊界上繪制黑色的滾動(dòng)條,這在大多數(shù)背景下都適用??捎蔑L(fēng)格如下:
[java] view plaincopy
UIScrollViewIndicatorStyleDefault
UIScrollViewIndicatorStyleBlack
UIScrollViewIndicatorStyleWhite
2.contentOffset
一個(gè)CGPoint結(jié)構(gòu),其中包含有要顯示內(nèi)容相對(duì)于窗口左上角的偏移量。默認(rèn)是從0×0開(kāi)始的,但是你也可以將顯示內(nèi)容放在其他位置。
3.directionalLockEnabled
默認(rèn)行為是允許用戶同時(shí)進(jìn)行橫向和縱向的滾動(dòng)。將這個(gè)屬性設(shè)置為YES會(huì)導(dǎo)致將用戶的滾動(dòng)行為鎖定成只允許橫向或縱向進(jìn)行,具體方向由初始姿態(tài)決定。
4.bounces
當(dāng)用戶抵達(dá)滾動(dòng)區(qū)域邊緣時(shí),這個(gè)功能允許用戶稍微拖動(dòng)到邊界外一點(diǎn)。當(dāng)用戶松開(kāi)手指后,這個(gè)區(qū)域會(huì)像個(gè)橡皮筋一樣,彈回到原位,給用戶一個(gè)可見(jiàn)的提示,表示他已經(jīng)到達(dá)了文檔開(kāi)始或結(jié)束位置。如果不想讓用戶的滾動(dòng)范圍能夠超出可見(jiàn)內(nèi)容,可以將這個(gè)屬性設(shè)置為NO。
5.bouncesZoom
類似于bounces 選項(xiàng),這個(gè)方法可以令用戶的縮放操作超出***或最小縮放級(jí)別,然后彈回到范圍以內(nèi)。如果你不想讓用戶能夠超出你指定的范圍進(jìn)行縮放,將這個(gè)屬性設(shè)置為NO。
6.pagingEnabled
當(dāng)開(kāi)啟了分頁(yè)功能時(shí),滾動(dòng)視圖被分割成多個(gè)獨(dú)立區(qū)段,二用戶的滾動(dòng)體驗(yàn)則變成了頁(yè)面翻轉(zhuǎn),你可以用這個(gè)屬性來(lái)進(jìn)行頁(yè)面翻轉(zhuǎn)。
三、委托方法
可以賦予滾動(dòng)視圖一個(gè)委托,下列委托方法會(huì)在特定時(shí)刻收到通知。
[java] view plaincopy
-(void)scrollViewDidScroll:(UIScrollView*)scrollView;//會(huì)在視圖滾動(dòng)時(shí)收到通知。包括一個(gè)指向被滾動(dòng)視圖的指針,從中可以讀取contentOffset屬性以確定其滾動(dòng)到的位置。
[java] view plaincopy
-(void)scrollViewWillBeginDragging:(UISCrollView*)scrollView;//當(dāng)用戶***在某個(gè)方向上進(jìn)行拖動(dòng)時(shí)得到通知。這個(gè)方法會(huì)得到被作為參數(shù)傳遞的滾動(dòng)視圖指針,也同樣可以從中讀取 contentOffset 屬性。
[java] view plaincopy
-(void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate;
//當(dāng)用戶抬起拖動(dòng)到手指時(shí)得到通知。還會(huì)得到一個(gè)布爾值,知名報(bào)告滾動(dòng)視圖***位置之前,是否需要減速。
[java] view plaincopy
-(void)scrollViewWillBeginDecelerate:(UIScrollView*)scrollView;//當(dāng)用戶抬起手指而視圖需要繼續(xù)移動(dòng)時(shí),會(huì)收到通知。這個(gè)方法可以用來(lái)讀取 contentOffset屬性,從而判斷出當(dāng)用戶抬起手指錢(qián)***一次滾動(dòng)到的位置,雖然這個(gè)位置并不會(huì)使?jié)L動(dòng)條的最終停止位置。
[java] view plaincopy
-(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView;//當(dāng)上面提到的減速完畢、滾動(dòng)視圖停止時(shí)得到通知。收到這個(gè)通知的時(shí)刻,滾動(dòng)視圖的contentOffset屬性會(huì)反映出滾動(dòng)條最終停止的位置。
[java] view plaincopy
-(void)scrollViewDidEndZooming:(UIScrollview*)scrollView withView:(UIView*)view atScale:(float)scale;//當(dāng)用戶對(duì)內(nèi)容進(jìn)行縮放時(shí),會(huì)收到通知。縮放比例表示為一個(gè)浮點(diǎn)值,會(huì)作為參數(shù)傳遞進(jìn)來(lái)。
[java] view plaincopy
-(BOOL)scrollViewShouldScrollToTop:(UIScrollView*)scrollView;
-(void)scrollViewDidScrollToTop:(UIScrollView*)scrollView;
//當(dāng)用戶點(diǎn)出iPhone狀態(tài)條時(shí),滾動(dòng)視圖委托可以決定視圖是否滾動(dòng)回到開(kāi)頭。
OK,都總結(jié)完了,后面會(huì)寫(xiě)一個(gè)頁(yè)面翻轉(zhuǎn)的例子敬請(qǐng)關(guān)注。
屬性 作用
CGPoint contentOffSet 監(jiān)控目前滾動(dòng)的位置
CGSize contentSize 滾動(dòng)范圍的大小
UIEdgeInsets contentInset 視圖在scrollView中的位置
id<UIScrollerViewDelegate>
delegate 設(shè)置協(xié)議
BOOL directionalLockEnabled 指定控件是否只能在一個(gè)方向上滾動(dòng)
BOOL bounces 控制控件遇到邊框是否反彈
BOOL alwaysBounceVertical 控制垂直方向遇到邊框是否反彈
BOOL alwaysBounceHorizontal 控制水平方向遇到邊框是否反彈
BOOL pagingEnabled 控制控件是否整頁(yè)翻動(dòng)
BOOL scrollEnabled 控制控件是否能滾動(dòng)
BOOL showsHorizontalScrollIndicator 控制是否顯示水平方向的滾動(dòng)條
BOOL
showsVerticalScrollIndicator 控制是否顯示垂直方向的滾動(dòng)條
UIEdgeInsets scrollIndicatorInsets 指定滾動(dòng)條在scrollerView中的位置
UIScrollViewIndicatorStyle
indicatorStyle 設(shè)定滾動(dòng)條的樣式
float decelerationRate 改變scrollerView的減速點(diǎn)位置
BOOL tracking 監(jiān)控當(dāng)前目標(biāo)是否正在被跟蹤
BOOL dragging 監(jiān)控當(dāng)前目標(biāo)是否正在被拖拽
BOOL decelerating 監(jiān)控當(dāng)前目標(biāo)是否正在減速
BOOL delaysContentTouches 控制視圖是否延時(shí)調(diào)用開(kāi)始滾動(dòng)的方法
BOOL canCancelContentTouches 控制控件是否接觸取消touch的事件
float minimumZoomScale 縮小的最小比例
float maximumZoomScale 放大的***比例
float zoomScale 設(shè)置變化比例
BOOL bouncesZoom 控制縮放的時(shí)候是否會(huì)反彈
BOOL zooming 判斷控件的大小是否正在改變
BOOL zoomBouncing 判斷是否正在進(jìn)行縮放反彈
BOOL scrollsToTop 控制控件滾動(dòng)到頂部