UIScrollView 是用来展示内容超过一个屏幕,需要滑动去看的时候的一个常用控件

首先,我们看如何用Swift创建一个UIScrollView

    1. //创建UIScrollView  
    2. let scrollV=UIScrollView(frame: CGRectMake(10, 50, 300, 300))  
    3. scrollV.backgroundColor=UIColor.whiteColor()  
    4. self.view.addSubview(scrollV)

    给ScrollView上添加一个图片看效果

      1. //找一张大图片放到scrollV上  
      2. let img=UIImage(named: "test.jpg")  
      3. let imageV=UIImageView(image: img)  
      4. scrollV.addSubview(imageV)

      此时我们发现图片只现实了左上角,而且不能滑动

      添加设置

      1. scrollV.contentSize=img!.size

      将 scrollV的contentSize 设置为展示内容的大小(此处就是img的大小)

      接下来是不是可以滑动

      但是,我们发现有个滑动条出现,默认的还不太好看我们试着试着一下

      swiftui 截屏 swift uiview_滑动条

      设置滑动条

      我们可以 修改滑动条的样式

      1. scrollV.indicatorStyle=UIScrollViewIndicatorStyle.White

      样式是一个枚举 大家可以尝试一下其他类型

      还可以直接讲滑动条取消

        1. scrollV.showsHorizontalScrollIndicator=false  
        2. scrollV.showsVerticalScrollIndicator=false

        还有我们发现在滑动到边界的时候发现图片还可以继续滑动,然后反弹回来

        其实这个也可以设置

        设置反弹效果

        1. scrollV.bounces=false

        这样滑动到边界之后就不能再滑动了

        图片默认现实的是左上角,我们还可以设置默认图片现实的位置

        设置偏移量

        1. scrollV.contentOffset=CGPointMake(100, 100)

        这样图片就可以从左边100  上边100 开始显示

        接下来我们看几个UiScrollView常用的代理方法

        首先,添加协议

        swiftui 截屏 swift uiview_swiftui 截屏_02

        设置代理

        1. scrollV.delegate=self

        首先,我们看第一个代理方法

        1. func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView?

        scrollView双手滑动缩放的时候调用词方法

        我们一首先图片缩放来看下他的用法

        当我们双手滑动缩小的时候 我们希望图片缩小,当双手滑动张开的时候 我们希望图片放大

        图片最小能缩小到原始的一半 最大能放到到原图的两倍
        首先设置图片最大最小倍数

        1. scrollV.minimumZoomScale=0.5  
        2. scrollV.maximumZoomScale=2.0

        然后实现代理方法

        1. func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {  
        2. return scrollView.subviews[0] as? UIView  
        3. }

        由于 我们scrollView 上只有一个图片所以 subviews取0就是刚才的图片

        好了试下效果吧

        还有三个代理方法

        1. func scrollViewDidScroll(scrollView: UIScrollView)

        滑动scrollView过程中只要图片在动就一直执行

        1. func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool)

        手指拖拽完成离开图片执行此方法

        1. func scrollViewDidEndDecelerating(scrollView: UIScrollView)

        图片停止移动还有执行此方法(如果是快速滑动的话手指一开之后图片还会继续滑动一点距离,注意他和手指离开两个代理方法的区别)

        我们实现一下代理方法测试一下

        1. func scrollViewDidScroll(scrollView: UIScrollView) {  
        2. "滑动中")  
        3. }  
        4.   
        5. func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {  
        6. "停止拖拽")  
        7. }  
        8.   
        9. func scrollViewDidEndDecelerating(scrollView: UIScrollView) {  
        10. "停止滑动")  
        11. }