1. 程式人生 > >iOS開發(swift):UIScrollView使用詳解

iOS開發(swift):UIScrollView使用詳解

參考資料:https://blog.csdn.net/wwc455634698/article/details/52669946

//建立滾動檢視

        let scrollView = UIScrollView()

        

        //設定尺寸

        scrollView.frame = CGRectMake(0, 100, self.view.frame.size.width, 200)

        

        //設定背景色

        scrollView.backgroundColor = UIColor.redColor()

        

        //新增檢視

        self.view.addSubview(scrollView)

        

        //設定滾動條

        //是否顯示水平滾動條

        scrollView.showsHorizontalScrollIndicator = true

        //是否顯示豎直滾動條

        scrollView.showsVerticalScrollIndicator = false

        

        //設定分頁滾動,勾選之後一次只顯示一張圖片,不會停留在圖片當中

        scrollView.pagingEnabled = true

        

        //設定是否可以拉出空白區域

        scrollView.bounces = true

        

        //預設是false。如果是true並且bounces也是true,即使內容尺寸比scrollView的尺寸小,也能垂直推動

        scrollView.alwaysBounceVertical = false

        

        //預設是false。如果是true並且bounces也是true,即使內容尺寸比scrollView的尺寸小,也能水平推動

        scrollView.alwaysBounceHorizontal = false

        

        

        //允許滑動檢視本身,如果設為false就不能觸發拖動代理事件

        scrollView.scrollEnabled = false

        

        //在scrollView的內容周圍新增一個附件的區域

        scrollView.contentInset =  UIEdgeInsetsMake(100, 50, 50, 50)

        

        //調整指示器(滾動條)的位置

        scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(30, 30, 30, 30)

        

        //設定指示器(滾動條)的樣式

        scrollView.indicatorStyle = UIScrollViewIndicatorStyle.Black//黑色

        

        //最小的縮放倍數,預設值為1.0

        scrollView.minimumZoomScale = 0.2

        

        //放大的縮放倍數,預設值為1.0

        scrollView.maximumZoomScale = 100

        

        //建立一個數組,儲存三張圖片

        let imagesArray = ["DOVE 2","DOVE 5","DOVE 10"]

        

        //迴圈建立ImageView

        for i in 0..<imagesArray.count {

            

            //建立imageView

            let imageView = UIImageView(frame: CGRectMake(CGFloat (i)*scrollView.frame.size.width, 0, scrollView.frame.size.width, scrollView.frame.size.height))

            //新增圖片

            imageView.image=UIImage(named: imagesArray[i])

            //開啟使用者互動

            imageView.userInteractionEnabled = true

            //把imageView新增到滾動檢視上

            scrollView.addSubview(imageView)

        }

        

        //設定內容區域

        scrollView.contentSize = CGSizeMake(scrollView.frame.size.width*CGFloat(imagesArray.count),scrollView.frame.size.height)

        

        //設定代理

        scrollView.delegate = self

        

        //設定directionalLockEnabled

        /*

         

         如果這個效能被設定成false,scrollView會被允許在水平和垂直兩個方向滾動。如果設定效能是true並且使用者開始在一個方向拖動時(水平方向或垂直方向),滾動檢視就不能在另一個方向滾動。如果拖動的方向時斜對角線方向,拖動事件將會被鎖住並且使用者可以在任何方向拖動,直到拖動事件結束。這個屬性的預設值是false。

         */

        scrollView.directionalLockEnabled = true

        

        //設定偏移量,以固定的速度設定成新的偏移量

        scrollView.setContentOffset(CGPointMake(10, 20), animated: false)

        

        //滾動矩形區域到可見的區域,如果完全可見就不做任何操作

        scrollView.scrollRectToVisible(CGRectMake(0, 0, 100, 300), animated: false)

        

        //短時間顯示滾動條,當你

        scrollView.flashScrollIndicators()

        

        //當用戶觸控到scrollView時(即使還沒有開始拖動ScrollView)就會返回一個true值

        scrollView.tracking

        

        //當用戶已經開始拖動時會返回一個true值,這可能會需要一點時間或者與拖動一段距離

        scrollView.dragging

        

        //當用戶不再拖動或者不再觸控scrollView(但是scrollView仍在滑動)

         scrollView.decelerating

        

        //預設值為true

        scrollView.delaysContentTouches = true

        

        //預設值為true。如果為false,一旦我們開始追蹤並且觸控移動,我們無法拖動

        scrollView.canCancelContentTouches = true

        

        //如果手勢已經被傳遞到了scollView的父View上,在檢視開始滾動之前毀掉用這個方法。如果這個方法返回的是false,scrollView不會滾動並且這個手勢會繼續向父View傳遞

//        scrollView.touchesShouldCancelInContentView(<#T##view: UIView##UIView#>)

        

        //設定縮放

//        scrollView.setZoomScale(<#T##scale: CGFloat##CGFloat#>, animated: <#T##Bool#>)

//        scrollView.zoomToRect(<#T##rect: CGRect##CGRect#>, animated: <#T##Bool#>)

        

        //預設為true。如果設定,當手勢起作用時使用者會經過最小/最大的區域,並且,在手勢結束時這個區域會自動設定為最小/最大值。

        scrollView.bouncesZoom = true

        

        // 當用戶向上的手勢時,會返回true

        scrollView.zooming

        

        NSLog("scrollView.zooming>>>>>%zd",scrollView.zooming)

        

        //當我們在最小和最大值中間的一個區域中,會返回true。

        scrollView.zoomBouncing

        

        //滾動到頂部,預設值為true

        scrollView.scrollsToTop = true

        

        //使用這些容器配置scrollView內建的手勢識別

        scrollView.panGestureRecognizer

        scrollView.pinchGestureRecognizer

        

        //建立UIPageControl

        let pageControl = UIPageControl(frame: CGRectMake(0, scrollView.frame.size.height-30,200, 30))

        

        //總的圖片頁數

        pageControl.numberOfPages = 6

        

        //當前頁

        pageControl.currentPage = 0

        

        //使用者點選UIPageControl的響應函式

        pageControl.addTarget(self, action: #selector(pageTurn(_:)), forControlEvents: UIControlEvents.ValueChanged)

        

        //設定pageControl 的尺寸

        let size = pageControl.sizeForNumberOfPages(6)


//點點的點選事件

    func pageTurn(pageControl:UIPageControl) {

        

        

    }

    //UIscrollView的協議代理方法

    //滑動過程中

    func scrollViewDidScroll(scrollView: UIScrollView) {

        

    }

    //開始拖動

    func scrollViewWillBeginDragging(scrollView: UIScrollView) {

        

        

    }

    //開始拖動(以某種速率和偏移量)

    func scrollViewDidEndDecelerating(scrollView: UIScrollView) {

        

    }

    

    //停止拖動

    func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {

        

    }

    //開始滑動

    func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {

        

    }

    

    //允許縮放的檢視(一個scrollview中只能有一個可以縮放且必須設定可以縮放的範圍)

//    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {

//        

//        //返回被縮放的試圖

//        //return imageView;

//    }

    

    //開始縮放的時候呼叫

    func scrollViewWillBeginZooming(scrollView: UIScrollView, withView view: UIView?) {

        

    }

    

    //正在縮放的時候呼叫

    func scrollViewDidZoom(scrollView: UIScrollView) {

        

    }

    

    //縮放完畢的時候呼叫

    func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) {

        

    }

    

    //將要滾動到頂部的時候呼叫

    func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool {

        

        return true

    }

    

    //滾動到頂部的時候呼叫

    func scrollViewDidScrollToTop(scrollView: UIScrollView) {

        

    }