UIScrollView 滾動視圖—IOS開發

來源:互聯網
上載者:User
聲明

歡迎轉載,但是請尊重作者勞動成果,轉載請保留此框內聲明,謝謝。
文章出處:http://blog.csdn.net/iukey

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

指定你希望使用的捲軸指標的類型。預設行為是在白邊界上繪製黑色的捲軸,這在大多數背景下都適用。可用風格如下:

UIScrollViewIndicatorStyleDefaultUIScrollViewIndicatorStyleBlackUIScrollViewIndicatorStyleWhite

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,都總結完了,後面會寫一個頁面翻轉的例子敬請關注。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.