UIScrollView與UIScrollViewDelegate

  • UIScrollView 的contentSize:設置UIScrollView的內容尺寸大小
  • UIScrollView的frame :設置UIScrollView的位置和尺寸
  • UIScrollView的contentInset:該屬性是一個UIEdeInsets類型的值,UIEdeInsets并不是一個類,而是一個結構體,它包含top、left、buttom、right四個成員變量,分別代表UIScrollView所需要顯示內容在上、下、左、右的留白。
  • UIScrollView的contentOffset:該屬性

UIScrollView的一些屬性值

tracking

當 touch 后還沒有拖動的時候值是YES,否則NO

scroller.pagingEnabled=YES;

UIScrollView會被分割成多個獨立頁面,用戶的滾動體驗則變成了頁面翻轉

zoomBouncing

當內容放大到最大或者最小的時候值是 YES,否則 NO

zooming

當正在縮放的時候值是 YES,否則 NO

decelerating

當滾動后,手指放開但是還在繼續(xù)滾動中。這個時候是 YES,其它時候是 NO

decelerationRate

設置手指放開后的減速率

maximumZoomScale

一個浮點數,表示能放最大的倍數

minimumZoomScale

一個浮點數,表示能縮最小的倍數

pagingEnabled

當值是 YES 會自動滾動到 subview 的邊界。默認是NO

scrollEnabled

決定是否可以滾動

delaysContentTouches

是個布爾值,當值是 YES 的時候,用戶觸碰開始,scroll view要延遲一會,看看是否用戶有意圖滾動。假如滾動了,那么捕捉 touch-down 事件,否則就不捕捉。假如值是NO,當用戶觸碰, scroll view 會立即觸發(fā) touchesShouldBegin:withEvent:inContentView:,默認是 YES

canCancelContentTouches

當值是 YES 的時候,用戶觸碰后,然后在一定時間內沒有移動,scrollView 發(fā)送 tracking events,然后用戶移動手指足夠長度觸發(fā)滾動事件,這個時候,scrollView 發(fā)送了 touchesCancelled:withEvent: 到 subview,然后 scroView 開始滾動。假如值是 NO,scrollView 發(fā)送 tracking events 后,就算用戶移動手指,scrollView 也不會滾動。

contentSize

里面內容的大小,也就是可以滾動的大小,默認是0,沒有滾動效果。

showsHorizontalScrollIndicator

滾動時是否顯示水平滾動條

showsVerticalScrollIndicator

滾動時是否顯示垂直滾動條

bounces(彈簧效果)

默認是 yes,就是滾動超過邊界會反彈有反彈回來的效果。假如是 NO,那么滾動到達邊界會立刻停止。

bouncesZoom

和 bounces 類似,區(qū)別在于:這個效果反映在縮放上面,假如縮放超過最大縮放,那么會反彈效果;假如是 NO,則到達最大或者最小的時候立即停止。

directionalLockEnabled

默認是 NO,可以在垂直和水平方向同時運動。當值是 YES 時,假如一開始是垂直或者是水平運動,那么接下來會鎖定另外一個方向的滾動。 假如一開始是對角方向滾動,則不會禁止某個方向

indicatorStyle

滾動條的樣式,基本只是設置顏色。總共3個顏色:默認、黑、白

scrollIndicatorInsets

設置滾動條的位置

UIScrollerViewDelegate代理方法

<pre>
//scrollView滾動時,就調用該方法。任何offset值改變都調用該方法。即滾動過程中,調用多次

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

    NSLog(@"scrollViewDidScroll");
    CGPoint point=scrollView.contentOffset;
    NSLog(@"%f,%f",point.x,point.y);
    // 從中可以讀取contentOffset屬性以確定其滾動到的位置。

    // 注意:當ContentSize屬性小于Frame時,將不會出發(fā)滾動

}
</pre>
<pre>
// 當scrollView縮放時,調用該方法。在縮放過程中,回多次調用

  • (void)scrollViewDidZoom:(UIScrollView *)scrollView{

    NSLog(@"scrollViewDidScroll");
    float value=scrollView.zoomScale;
    NSLog(@"%f",value);

}
</pre>
<pre>
// 當開始滾動視圖時,執(zhí)行該方法。一次有效滑動(開始滑動,滑動一小段距離,只要手指不松開,只算一次滑動),只執(zhí)行一次。

  • (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

    NSLog(@"scrollViewWillBeginDragging");

}
</pre>
<pre>
// 滑動scrollView,并且手指離開時執(zhí)行。一次有效滑動,只執(zhí)行一次。
// 當pagingEnabled屬性為YES時,不調用,該方法

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

    NSLog(@"scrollViewWillEndDragging");

}
</pre>
<pre>
// 滑動視圖,當手指離開屏幕那一霎那,調用該方法。一次有效滑動,只執(zhí)行一次。
// decelerate,指代,當我們手指離開那一瞬后,視圖是否還將繼續(xù)向前滾動(一段距離),經過測試,decelerate=YES

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

    NSLog(@"scrollViewDidEndDragging");
    if (decelerate) {
    NSLog(@"decelerate");
    }else{
    NSLog(@"no decelerate");

    }

    CGPoint point=scrollView.contentOffset;
    NSLog(@"%f,%f",point.x,point.y);

}
</pre>
<pre>
// 滑動減速時調用該方法。

  • (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{

    NSLog(@"scrollViewWillBeginDecelerating");
    // 該方法在scrollViewDidEndDragging方法之后。

}
</pre>
<pre>
// 滾動視圖減速完成,滾動將停止時,調用該方法。一次有效滑動,只執(zhí)行一次。

  • (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

    NSLog(@"scrollViewDidEndDecelerating");

    [_scrollView setContentOffset:CGPointMake(0, 500) animated:YES];

}
</pre>
<pre>
// 當滾動視圖動畫完成后,調用該方法,如果沒有動畫,那么該方法將不被調用

  • (void)scrollViewDidEndScrollingAnimation:(UIScrollView\ *)scrollView{

    NSLog(@"scrollViewDidEndScrollingAnimation");
    // 有效的動畫方法為:
    // - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 方法
    // - (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 方法

}
</pre>

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

  • (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

    NSLog(@"viewForZoomingInScrollView");
    return self.imgView;

}
</pre>
<pre>
// 當將要開始縮放時,執(zhí)行該方法。一次有效縮放,就只執(zhí)行一次。

  • (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView\ *)view{

    NSLog(@"scrollViewWillBeginZooming");

}
</pre>
<pre>
// 當縮放結束后,并且縮放大小回到minimumZoomScale與maximumZoomScale之間后(我們也許會超出縮放范圍),調用該方法。

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

    NSLog(@"scrollViewDidEndZooming");

}
</pre>
<pre>
// 指示當用戶點擊狀態(tài)欄后,滾動視圖是否能夠滾動到頂部。
//如果你不是完全滾動到滾軸視圖的頂部,你可以輕點狀態(tài)欄,那個可視的滾軸視圖會一直滾動到頂部,那是默認行為,你可以通過該方法返回NO來關閉它
//需要設置滾動視圖的屬性:_scrollView.scrollsToTop=YES;

  • (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{

    return YES;

}
</pre>
<pre>
// 當滾動視圖滾動到最頂端后,執(zhí)行該方法

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

    NSLog(@"scrollViewDidScrollToTop");
    }
    </pre>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容