溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

UIScrollView 滾動(dòng)視圖的方法總結(jié)

發(fā)布時(shí)間:2020-08-10 03:54:31 來(lái)源:網(wǎng)絡(luò) 閱讀:1350 作者:18253590602 欄目:開(kāi)發(fā)技術(shù)

UIScrollView的屬性總結(jié)

屬性作用
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)到頂部

這里把UIScrollView的幾個(gè)要點(diǎn)總結(jié)下:

從你的手指touch屏幕開(kāi)始,scrollView開(kāi)始一個(gè)timer,如果:

1.  150ms內(nèi)如果你的手指沒(méi)有任何動(dòng)作,消息就會(huì)傳給subView。

2.  150ms內(nèi)手指有明顯的滑動(dòng)(一個(gè)swipe動(dòng)作),scrollView就會(huì)滾動(dòng),消息不會(huì)傳給subView,這里就是產(chǎn)生問(wèn)題二的原因。

3. 150ms內(nèi)手指沒(méi)有滑動(dòng),scrollView將消息傳給subView,但是之后手指開(kāi)始滑動(dòng),scrollView傳送touchesCancelled消息給subView,然后開(kāi)始滾動(dòng)。

觀察下tableView的情況,你先按住一個(gè)cell,cell開(kāi)始高亮,手不要放開(kāi),開(kāi)始滑動(dòng),tableView開(kāi)始滾動(dòng),高亮取消。

 

delaysContentTouches的作用:

這個(gè)標(biāo)志默認(rèn)是YES,使用上面的150ms的timer,如果設(shè)置為NO,touch事件立即傳遞給subView,不會(huì)有150ms的等待。

 

cancelsTouches的作用:

這個(gè)標(biāo)準(zhǔn)默認(rèn)為YES,如果設(shè)置為NO,這消息一旦傳遞給subView,這scroll事件不會(huì)再發(fā)生。




UIScrollViewDelegate  協(xié)議

//scrollView滾動(dòng)時(shí),就調(diào)用該方法。任何offset值改變都調(diào)用該方法。即滾動(dòng)過(guò)程中,調(diào)用多次


- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

    // 從中可以讀取contentOffset屬性以確定其滾動(dòng)到的位置。

    // 注意:當(dāng)ContentSize屬性小于Frame時(shí),將不會(huì)出發(fā)滾動(dòng)

  

}



// 當(dāng)開(kāi)始滾動(dòng)視圖時(shí),執(zhí)行該方法。一次有效滑動(dòng)(開(kāi)始滑動(dòng),滑動(dòng)一小段距離,只要手指不松開(kāi),只算一次滑動(dòng)),只執(zhí)行一次。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{}


// 滑動(dòng)scrollView,并且手指離開(kāi)時(shí)執(zhí)行。一次有效滑動(dòng),只執(zhí)行一次。

// 當(dāng)pagingEnabled屬性為YES時(shí),不調(diào)用,該方法

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{}


// 滑動(dòng)視圖,當(dāng)手指離開(kāi)屏幕那一霎那,調(diào)用該方法。一次有效滑動(dòng),只執(zhí)行一次。

// decelerate,指代,當(dāng)我們手指離開(kāi)那一瞬后,視圖是否還將繼續(xù)向前滾動(dòng)(一段距離),經(jīng)過(guò)測(cè)試,decelerate=YES

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{}


// 滑動(dòng)減速時(shí)調(diào)用該方法。

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{}


// 滾動(dòng)視圖減速完成,滾動(dòng)將停止時(shí),調(diào)用該方法。一次有效滑動(dòng),只執(zhí)行一次。

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{}


// 當(dāng)滾動(dòng)視圖動(dòng)畫完成后,調(diào)用該方法,如果沒(méi)有動(dòng)畫,那么該方法將不被調(diào)用

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{}



// 返回將要縮放的UIView對(duì)象。要執(zhí)行多次

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{}

// 當(dāng)scrollView縮放時(shí),調(diào)用該方法。在縮放過(guò)程中,回多次調(diào)用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView{}

// 當(dāng)將要開(kāi)始縮放時(shí),執(zhí)行該方法。一次有效縮放,就只執(zhí)行一次。

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{}

// 當(dāng)縮放結(jié)束后,并且縮放大小回到minimumZoomScalemaximumZoomScale之間后(我們也許會(huì)超出縮放范圍),調(diào)用該方法。

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{}



// 指示當(dāng)用戶點(diǎn)擊狀態(tài)欄后,滾動(dòng)視圖是否能夠滾動(dòng)到頂部。需要設(shè)置滾動(dòng)視圖的屬性:_scrollView.scrollsToTop=YES;

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{}


// 當(dāng)滾動(dòng)視圖滾動(dòng)到最頂端后,執(zhí)行該方法

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{


}


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI