Swift-UIScrollView使用详解

龙涵蓄
2023-12-01

//创建滚动视图

        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.contentInsetUIEdgeInsetsMake(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

        /*

         

         如果这个性能被设置成falsescrollView会被允许在水平和垂直两个方向滚动。如果设置性能是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上,在视图开始滚动之前毁掉用这个方法。如果这个方法返回的是falsescrollView不会滚动并且这个手势会继续向父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) {

        

    }



 类似资料: