UIScrollView

一、滑動(dòng)試圖(UIScrollView)

1、基本概念

 1) 移動(dòng)設(shè)備的屏幕大小是極其有限的,因此直接展示在用戶眼前的內(nèi)容也相當(dāng)有限,當(dāng)展示的內(nèi)容較多,超出一個(gè)屏幕時(shí),用戶可通過滾動(dòng)手勢(shì)來(lái)查看屏幕以外的內(nèi)容

 2) 通過scrollView可以通過手勢(shì),放大或者縮小顯示的內(nèi)容

2、UIScrollView常用屬性

 1)里面內(nèi)容的大小,也就是可以滾動(dòng)的大小,模式是0,沒有滾動(dòng)效果

   contentSize

 2)這個(gè)屬性能夠在UIScrollView的4周增加額外的滾動(dòng)區(qū)域

   contentInset

 3) 這個(gè)屬性用來(lái)表示UIScrollView滾動(dòng)的位置

   contentOffset

 4) 默認(rèn)是 yes,就是滾動(dòng)超過邊界會(huì)反彈有反彈回來(lái)的效果。假如是 NO,那么滾動(dòng)到達(dá)邊界會(huì)立刻停止

   bounces

 5) 是否分頁(yè)

   pagingEnabled

 6) 是否可以滾動(dòng)

   scrollEnabled  

 7) 滾動(dòng)時(shí)是否顯示水平滾動(dòng)條

   showsHorizontalScrollIndicator
  
 8) 滾動(dòng)時(shí)是否顯示垂直滾動(dòng)條 

   showsVerticalScrollIndicator

 9) 滾動(dòng)條的樣式,基本只是設(shè)置顏色??偣?個(gè)顏色:默認(rèn)、黑、白

    indicatorStyle


 

 10) 默認(rèn)是 NO,可以在垂直和水平方向同時(shí)運(yùn)動(dòng)。當(dāng)值是 YES 時(shí),假如一開始是垂直或者是水平運(yùn)動(dòng),那么接下來(lái)會(huì)鎖定另外一個(gè)方向的滾動(dòng)。 假如一開始是對(duì)角方向滾動(dòng),則不會(huì)禁止某個(gè)方向

   directionalLockEnabled

 10) 讓指定的區(qū)域顯示顯示出來(lái)

    scrollRectToVisible:animate

 10)當(dāng)touch后還沒有拖動(dòng)的時(shí)候值是YES,否則是NO

   tracking

 11) 當(dāng)內(nèi)容放大到最大或者最小的時(shí)候是YES,否則NO

   zoomBouncing

 12) 當(dāng)正在縮放的時(shí)候值是YES,否則為NO

    zooming

 13) 當(dāng)滾動(dòng)后,手指放開但是還在繼續(xù)滾動(dòng)中。這個(gè)時(shí)候是 YES,其它時(shí)候是 NO

    decelerating

 14) 設(shè)置手指放開后的減速率

    decelerationRate

 15) 一個(gè)浮點(diǎn)數(shù),表示能放最大的倍數(shù)

    maximumZoomScale

 16) 一個(gè)浮點(diǎn)數(shù),表示能縮最小的倍數(shù)

    minimumZoomScale

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

    bouncesZoom

3、UIScrollView代理方法

 創(chuàng)建一個(gè)UIScrollView,并在里面放置一張圖片

 1)scrollView已經(jīng)滑動(dòng)
  
   - (void)scrollViewDidScroll:(UIScrollView *)scrollView;

 2)視圖已經(jīng)放大或縮小

   - (void)scrollViewDidZoom:(UIScrollView *)scrollView;

 3)scrollView開始拖動(dòng)

   - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

 4)scrollView結(jié)束拖動(dòng)

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

 5)scrollView開始減速(以下兩個(gè)方法注意與以上兩個(gè)方法加以區(qū)別)

   - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;

 6)scrollview減速停止

   - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;

    用法:


     if (![scrollView isMemberOfClass:[UITableView class]]) {
 
       int current = scrollView.contentOffset.x / 320;
       UIPageControl *pageControl = (UIPageControl *)[self.view viewWithTag:101];
       pageControl.currentPage = current;
     }


 7)返回一個(gè)放大或者縮小的視圖

   - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;

 8)開始放大或者縮小

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

 9)縮放結(jié)束時(shí)

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

 10)是否支持滑動(dòng)至頂部

   - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;

 11)滑動(dòng)到頂部時(shí)調(diào)用該方法

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

一、利用scrollView實(shí)現(xiàn)圖片的放大縮小

1、設(shè)置最大最小縮放倍率

  self.maximumZoomScale = 2.5;
  self.minimumZoomScale = 1;

2、指定縮放誰(shuí)

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

3、雙擊事件的放大與縮小

 - (void)zoomInOrOut:(UITapGestureRecognizer *)tapGesture
 {

   if (self.zoomScale >= 2.5) {
    [self setZoomScale:1 animated:YES];
   }else {
    CGPoint point = [tapGesture locationInView:self];
    [self zoomToRect:CGRectMake(point.x - 40, point.y - 40, 80, 80) animated:YES];
   }
 }

二、實(shí)現(xiàn)類似相冊(cè)的功能

 1、創(chuàng)建一個(gè)scrollView,進(jìn)行配置

 2、在scrollView里面放多張能夠顯示得圖片

 3、每次翻到下一張圖片時(shí)要讓這上個(gè)圖片恢復(fù)到原比例

   int pre = 0;

   - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
   {
     int current = scrollView.contentOffset.x / 340;

     ImageScrollView *imgScrollView = (ImageScrollView *)[scrollView viewWithTag:pre];
     if (imgScrollView.zoomScale > 1) {
     imgScrollView.zoomScale = 1;
     }

    pre = current;
   }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容