ios之UIScrollerView滾動視圖總結(jié)
UIScrollView 類負(fù)責(zé)所有基于 UIKit 的滾動操作。
一、創(chuàng)建
CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ; UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ];
當(dāng)你創(chuàng)建完滾動視圖后,你可以將另一個視圖的內(nèi)容粘合到滾動視圖的空白頁上。這回創(chuàng)建一個滾動的內(nèi)容窗口:
[ scrollView addSubview:myView];
你必須給出內(nèi)容的實際大小,這樣滾動視圖才知道滾動的范圍:
scrollView.contentSize = myView.frame.size;
要開啟縮放功能需要調(diào)整視圖的兩個屬性,分別是maxinumZoomScale 和 mininumZoomScale 。這樣就可以允許用戶使用捏合手勢調(diào)整內(nèi)容大?。?/p>
scrollView.maxinumZoomScale = 2.0;//允許放大2倍 scrollView.mininumZoomScale = 0.5;//允許放大到0.5倍
要打開縮放功能,你還需要增加一個UIScrollViewDelegate 代理,通過一個名為 viewForZoomingScrollView
的方法做出響應(yīng)。這個方法會返回進(jìn)行縮放時所使用的 UIView 對象:
scrollView.delegate = self; - (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView{ retutn myView; }
Tips:對于大規(guī)模數(shù)據(jù),你可能會在最初使用一個低于實際大小(1.0)的縮放比例,讓用戶可以平滑地進(jìn)行放大。
二、屬性
除了上面用到的縮放屬性外,滾動視圖還有會讓你多其他屬性,可以對現(xiàn)實內(nèi)容的行為進(jìn)行微調(diào)。你可以對 UIScrollView 類進(jìn)行多方位定制。下面這些屬性是最常用的。
1.indicatorStyle
指定你希望使用的滾動條指示器的類型。默認(rèn)行為是在白邊界上繪制黑色的滾動條,這在大多數(shù)背景下都適用??捎蔑L(fēng)格如下:
- UIScrollViewIndicatorStyleDefault
- UIScrollViewIndicatorStyleBlack
- UIScrollViewIndicatorStyleWhite
2.contentOffset
一個CGPoint結(jié)構(gòu),其中包含有要顯示內(nèi)容相對于窗口左上角的偏移量。默認(rèn)是從0×0開始的,但是你也可以將顯示內(nèi)容放在其他位置。
3.directionalLockEnabled
默認(rèn)行為是允許用戶同時進(jìn)行橫向和縱向的滾動。將這個屬性設(shè)置為YES會導(dǎo)致將用戶的滾動行為鎖定成只允許橫向或縱向進(jìn)行,具體方向由初始姿態(tài)決定。
4.bounces
當(dāng)用戶抵達(dá)滾動區(qū)域邊緣時,這個功能允許用戶稍微拖動到邊界外一點。當(dāng)用戶松開手指后,這個區(qū)域會像個橡皮筋一樣,彈回到原位,給用戶一個可見的提示,表示他已經(jīng)到達(dá)了文檔開始或結(jié)束位置。如果不想讓用戶的滾動范圍能夠超出可見內(nèi)容,可以將這個屬性設(shè)置為NO。
5.bouncesZoom
類似于bounces 選項,這個方法可以令用戶的縮放操作超出最大或最小縮放級別,然后彈回到范圍以內(nèi)。如果你不想讓用戶能夠超出你指定的范圍進(jìn)行縮放,將這個屬性設(shè)置為NO。
6.pagingEnabled
當(dāng)開啟了分頁功能時,滾動視圖被分割成多個獨立區(qū)段,二用戶的滾動體驗則變成了頁面翻轉(zhuǎn),你可以用這個屬性來進(jìn)行頁面翻轉(zhuǎn)。
三、委托方法
可以賦予滾動視圖一個委托,下列委托方法會在特定時刻收到通知。
-(void)scrollViewDidScroll:(UIScrollView*)scrollView; //會在視圖滾動時收到通知。包括一個指向被滾動視圖的指針,從中可以讀取contentOffset屬性以確定其滾動到的位置。
-(void)scrollViewWillBeginDragging:(UISCrollView*)scrollView; //當(dāng)用戶首次在某個方向上進(jìn)行拖動時得到通知。這個方法會得到被作為參數(shù)傳遞的滾動視圖指針,也同樣可以從中讀取 contentOffset 屬性。
-(void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate; //當(dāng)用戶抬起拖動到手指時得到通知。還會得到一個布爾值,知名報告滾動視圖最后位置之前,是否需要減速。
-(void)scrollViewWillBeginDecelerate:(UIScrollView*)scrollView; //當(dāng)用戶抬起手指而視圖需要繼續(xù)移動時,會收到通知。這個方法可以用來讀取 contentOffset屬性,從而判斷出當(dāng)用戶抬起手指錢最后一次滾動到的位置,雖然這個位置并不會使?jié)L動條的最終停止位置。
-(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView; //當(dāng)上面提到的減速完畢、滾動視圖停止時得到通知。收到這個通知的時刻,滾動視圖的contentOffset屬性會反映出滾動條最終停止的位置。
-(void)scrollViewDidEndZooming:(UIScrollview*)scrollView withView:(UIView*)view atScale:(float)scale; //當(dāng)用戶對內(nèi)容進(jìn)行縮放時,會收到通知??s放比例表示為一個浮點值,會作為參數(shù)傳遞進(jìn)來。
-(BOOL)scrollViewShouldScrollToTop:(UIScrollView*)scrollView; -(void)scrollViewDidScrollToTop:(UIScrollView*)scrollView; //當(dāng)用戶點出iPhone狀態(tài)條時,滾動視圖委托可以決定視圖是否滾動回到開頭。
OK,都總結(jié)完了,后面會寫一個頁面翻轉(zhuǎn)的例子敬請關(guān)注。
屬性和作用
- CGPoint contentOffSet 監(jiān)控目前滾動的位置
- CGSize contentSize 滾動范圍的大小
- UIEdgeInsets contentInset 視圖在scrollView中的位置
- id<UIScrollerViewDelegate>
- delegate 設(shè)置協(xié)議
- BOOL directionalLockEnabled 指定控件是否只能在一個方向上滾動
- BOOL bounces 控制控件遇到邊框是否反彈
- BOOL alwaysBounceVertical 控制垂直方向遇到邊框是否反彈
- BOOL alwaysBounceHorizontal 控制水平方向遇到邊框是否反彈
- BOOL pagingEnabled 控制控件是否整頁翻動
- BOOL scrollEnabled 控制控件是否能滾動
- BOOL showsHorizontalScrollIndicator 控制是否顯示水平方向的滾動條
- BOOL showsVerticalScrollIndicator 控制是否顯示垂直方向的滾動條
- UIEdgeInsets scrollIndicatorInsets 指定滾動條在scrollerView中的位置
- UIScrollViewIndicatorStyle indicatorStyle 設(shè)定滾動條的樣式
- float decelerationRate 改變scrollerView的減速點位置
- 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 控制視圖是否延時調(diào)用開始滾動的方法
- BOOL canCancelContentTouches 控制控件是否接觸取消touch的事件
- float minimumZoomScale 縮小的最小比例
- float maximumZoomScale 放大的最大比例
- float zoomScale 設(shè)置變化比例
- BOOL bouncesZoom 控制縮放的時候是否會反彈
- BOOL zooming 判斷控件的大小是否正在改變
- BOOL zoomBouncing 判斷是否正在進(jìn)行縮放反彈
- BOOL scrollsToTop 控制控件滾動到頂部
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- IOS上iframe的滾動條失效的解決辦法
- iOS應(yīng)用開發(fā)中UIScrollView滾動視圖的基本用法總結(jié)
- iOS實現(xiàn)滾動字幕的動畫特效
- IOS中UITableView滾動到指定位置
- iOS ScrollView嵌套tableView聯(lián)動滾動的思路與最佳實踐
- IOS 的彈性滾動解決方案
- iOS使用UICollectionView實現(xiàn)橫向滾動照片效果
- iOS Swift UICollectionView橫向分頁滾動,cell左右排版問題詳解
- 在IOS系統(tǒng)上滾動條滾動到指定的位置出現(xiàn)空白頁面的解決方案
- iOS實現(xiàn)循環(huán)滾動公告欄
相關(guān)文章
iOS UIScrollView滾動視圖/無限循環(huán)滾動/自動滾動的實例代碼
這篇文章主要介紹了iOS UIScrollView滾動視圖/無限循環(huán)滾動/自動滾動,需要的朋友可以參考下2017-02-02IOS 自定義UICollectionView的頭視圖或者尾視圖UICollectionReusableView
這篇文章主要介紹了IOS 自定義UICollectionView的頭視圖或者尾視圖UICollectionReusableView的相關(guān)資料,需要的朋友可以參考下2017-01-01為textView添加語音輸入功能的實例代碼(集成訊飛語音識別)
下面小編就為大家分享一篇為textView添加語音輸入功能的實例代碼(集成訊飛語音識別),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01理解iOS多線程應(yīng)用的開發(fā)以及線程的創(chuàng)建方法
這篇文章主要介紹了理解iOS多線程應(yīng)用的開發(fā)以及線程的創(chuàng)建方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-11-11IOS 基礎(chǔ)之設(shè)置 tableview 的分割線
這篇文章主要介紹了IOS 基礎(chǔ)之設(shè)置 tableview 的分割線的相關(guān)資料,需要的朋友可以參考下2017-03-03基于iOS Realm數(shù)據(jù)庫的使用實例詳解
下面小編就為大家分享一篇基于iOS Realm數(shù)據(jù)庫的使用實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01