UIScrollView的屬性總結

  1. UIScrollView的屬性總結html

    =====屬性=====做用===ios

    CGPoint contentOffSet----------監控目前滾動的位置app

    CGSize contentSize--------------滾動範圍的大小測試

    UIEdgeInsets contentInset---------視圖在scrollView中的位置動畫

    id<UIScrollerViewDelegate> delegate------設置協議3d

    BOOL directionalLockEnabled---------指定控件是否只能在一個方向上滾動htm

    BOOL bounces------------控制控件遇到邊框是否反彈對象

    BOOL alwaysBounceVertical-------控制垂直方向遇到邊框是否反彈blog

    BOOL alwaysBounceHorizontal------控制水平方向遇到邊框是否反彈事件

    BOOL pagingEnabled-------控制控件是否整頁翻動

    BOOL scrollEnabled---------控制控件是否能滾動

    BOOL showsHorizontalScrollIndicator------控制是否顯示水平方向的滾動條

    BOOL showsVerticalScrollIndicator----------控制是否顯示垂直方向的滾動條

    UIEdgeInsets scrollIndicatorInsets-----------指定滾動條在scrollerView中的位置

    UIScrollViewIndicatorStyle   indicatorStyle-設定滾動條的樣式

    float decelerationRate----------改變scrollerView的減速點位置

    BOOL tracking-----------監控當前目標是否正在被跟蹤

    BOOL dragging---------監控當前目標是否正在被拖拽

    BOOL decelerating---------監控當前目標是否正在減速

    BOOL delaysContentTouches-------控制視圖是否延時調用開始滾動的方法

    BOOL canCancelContentTouches------------控制控件是否接觸取消touch的事件

    float minimumZoomScale------------縮小的最小比例

    float maximumZoomScale---------放大的最大比例

    float zoomScale------------設置變化比例

    BOOL bouncesZoom-----------控制縮放的時候是否會反彈

    BOOL zooming---------判斷控件的大小是否正在改變

    BOOL zoomBouncing------------判斷是否正在進行縮放反彈

    BOOL scrollsToTop--------------控制控件滾動到頂部

  2. 2

    這裏把UIScrollView的幾個要點總結下:

    從你的手指touch屏幕開始,scrollView開始一個timer,若是: 

     

    1.  150ms內若是你的手指沒有任何動做,消息就會傳給subView。

     

    2.  150ms內手指有明顯的滑動(一個swipe動做),scrollView就會滾動,消息不會傳給subView,這裏就是產生問題二的緣由。

     

    3. 150ms內手指沒有滑動,scrollView將消息傳給subView,可是以後手指開始滑動,scrollView傳送touchesCancelled消息給subView,而後開始滾動。

    觀察下tableView的狀況,你先按住一個cell,cell開始高亮,手不要放開,開始滑動,tableView開始滾動,高亮取消。

     

    4.delaysContentTouches的做用:

    這個標誌默認是YES,使用上面的150ms的timer,若是設置爲NO,touch事件當即傳遞給subView,不會有150ms的等待。

     

    5.cancelsTouches的做用:

    這個標準默認爲YES,若是設置爲NO,這消息一旦傳遞給subView,這scroll事件不會再發生。

  3. 3

    ======UIScrollViewDelegate  協議========

    //1.  scrollView滾動時,就調用該方法。任何offset值改變都調用該方法。即滾動過程當中,調用屢次

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

        // 從中能夠讀取contentOffset屬性以肯定其滾動到的位置。

        // 注意:當ContentSize屬性小於Frame時,將不會出發滾動

        NSLog(@"=====視圖正在滾動====");

    }

     

     

    // 2. 當開始滾動視圖時,執行該方法。一次有效滑動(開始滑動,滑動一小段距離,只要手指不鬆開,只算一次滑動),只執行一次。

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

           NSLog(@"----將要開始拖動--------");

    }

     

    //3. 滑動scrollView,而且手指離開時執行。一次有效滑動,只執行一次。

    // 當pagingEnabled屬性爲YES時,不調用,該方法

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

        //第一個參數 是它自己

        //第二個參數 是慣性值

        //第三個參數 是中止的點 提早就算好了中止的位置

        NSLog(@"---------將要中止拖動-----------");

    }

     

    //4. 滑動視圖,當手指離開屏幕那一霎那,調用該方法。一次有效滑動,只執行一次。

    // decelerate,指代,當咱們手指離開那一瞬後,視圖是否還將繼續向前滾動(一段距離),通過測試,decelerate=YES

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

       NSLog(@"----------已經中止拖動-------------");

    }

     

    //5. 滑動減速時調用該方法

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

          NSLog(@"------將要開始減速------");

    }

     

    //6. 滾動視圖減速完成,滾動將中止時,調用該方法。一次有效滑動,只執行一次

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

           //這裏能夠取到當前是第幾頁

             _index = scrollView.contentOffset.x / scrollView.frame.size.width;

          //    scrollView.contentOffset 不帶動畫

          //設置偏移量 動畫版

          [scrollView setContentOffset:CGPointMake(150, 150) animated:YES];

          NSLog(@"------------已經結束減速-------------");

    }

     

    //7. 當滾動視圖動畫完成後,調用該方法,若是沒有動畫,那麼該方法將不被調用

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

            NSLog(@"已經結束位移動畫");

    }

     

     

     

     

    //8. 當scrollView縮放時,調用該方法。在縮放過程當中,回屢次調用

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

          NSLog(@"發生縮放");

    }

     

    //9. 返回將要縮放的UIView對象。要執行屢次

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

           return scrollView.subviews[0];

    }

     

    //10. 當將要開始縮放時,執行該方法。一次有效縮放,就只執行一次

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

          //將要開始縮放

    }

     

    //11. 當縮放結束後,而且縮放大小回到minimumZoomScale與maximumZoomScale之間後(咱們也許會超出縮放範圍),調用該方法

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

          //將要結束縮放

    }

     

     

    //12. 指示當用戶點擊狀態欄後,滾動視圖是否可以滾動到頂部。須要設置滾動視圖的屬性:_scrollView.scrollsToTop=YES;

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

           return YES;

    }

     

    //13. 當滾動視圖滾動到最頂端後,執行該方法

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

         //已經回到頂點

    }

    ios 開發 之---UIScrollView(滾動視圖)
    ios 開發 之---UIScrollView(滾動視圖)
  4. 4

    下面我就說一下scrollView的用法,設置app的導航頁,帶有小白點

     

    1.遵循協議--<UIScrollViewDelegate>

    ios 開發 之---UIScrollView(滾動視圖)
  5. 5

    2.建立scrollView

    通常狀況下,咱們建立一個UIScrollView全局變量和UIPageControl的全局變量

    以下圖:

    ios 開發 之---UIScrollView(滾動視圖)
  6. 6

    初始化

    ios 開發 之---UIScrollView(滾動視圖)
  7. 7

    ===添加圖片視圖===

    這一步,內容較多

    重點的地方都標註了

    ios 開發 之---UIScrollView(滾動視圖)
  8. 8

    【注意】設置_scrollView的contentSize,若是不設置,滾動視圖不能左右滑動

    其餘幾個屬性也很重要,頁須要設置,都作了註釋

    代碼以下圖:

    ios 開發 之---UIScrollView(滾動視圖)
  9. 9

    添加小白點,滑動圖片後會隨着變更

    建立小白點

    ios 開發 之---UIScrollView(滾動視圖)
    ios 開發 之---UIScrollView(滾動視圖)
  10. 10

    滑動圖片後的回調方法

    ios 開發 之---UIScrollView(滾動視圖)
相關文章
相關標籤/搜索