iOS UIScrollView使用全解 滚动视图使用大全 swift

//  UIScrollView使用方法、属性

 

import UIKit

class ViewController: UIViewController ,UIScrollViewDelegate{

    

    var scroll:UIScrollView!

    

    override func viewDidLoad() {

        super.viewDidLoad()

        view.backgroundColor = UIColor.white

      

        scroll = UIScrollView(frame: view.bounds)

        let myView = UIView(frame: CGRect(x: 50, y: 50, width: 300, height: 500))

        myView.backgroundColor = UIColor.lightGray

        scroll.addSubview(myView)

       

        // 设置内容大小,如果小于 scrollView 的 frame 大小,讲道理不会 scroll

        scroll.contentSize = CGSize(width: view.bounds.width*2, height: view.bounds.height*2)

        // 但是可以设定:内容就算小于 frame,也强制能拖动:

        scroll.alwaysBounceVertical = true //还有水平的

        //内容的初始位置偏移,x方向和y方向

        scroll.contentOffset = CGPoint(x: 20, y: 20)

       

        // 滑到尽头时是否反弹 default为true

        scroll.bounces = true

        //拖时候不能改变方向。但往对角线方向开始拖,可以自由拖

        scroll.isDirectionalLockEnabled = false //default false

        //翻页效果,true 就是 滑动小了回到原位置,大了自动滑到下一页

        scroll.isPagingEnabled = false

        //scroll.isScrollEnabled = false //false就不能滑了==

        //点状态栏回到最上方 

        scroll.scrollsToTop = true;

        

        //滚动条到屏幕边缘的距离 offset <-> inset ,offset偏移,inset内移

        scroll.scrollIndicatorInsets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 0)

        //add additional scroll area around content

        scroll.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)

        //是否显示滚动条

        scroll.showsVerticalScrollIndicator = true //还有水平的

        scroll.indicatorStyle = .black //默认黑,黑白两色可选

        function()

        

        // 两指缩放与扩大 倍数

        scroll.minimumZoomScale = 0.5

        scroll.maximumZoomScale = 1.6

        

        //超过放大范围再弹回来

        scroll.bouncesZoom = true

        //如果正显示着键盘,拖动,则键盘撤回

        scroll.keyboardDismissMode = .onDrag

        // 注意这点,一般 view controller 内都是 touchesBegan 然后收键盘,对于 scrollView,比如 tableView,必须通过此属性 或者实现代理方法 scrollViewWillBeginDragging 里面收键盘,因为事件传不到VC中,详看我的文章 响应者链

 

// 下拉刷新一般不用下面这个,一般为了扩展性用 MJRefresh 或自己实现

        //scroll.refreshControl = UIRefreshControl(frame: CGRect(x: 10, y: 10, width: 40, height: 40))

       

        //现在实现ScrollViewDelegate,补充后面的协议方法

        scroll.delegate = self       

        view.addSubview(scroll)

    }

    

    //设置可以缩放

    func viewForZooming(in scrollView: UIScrollView) -> UIView? {

        return scrollView.subviews[0]

    }

    

    func function(){

        //滚动条突然显现一下

        scroll.flashScrollIndicators()

    }

    //点击状态栏时触发,返回false则不能滑上去 相应的 didScrollToTop是已经回了调用的

    func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool {

        // 可以在这里调用 刷新 函数,然后滑到顶

        return true

    }

    //开始拖拽前:

    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {

        

    }

    //手滑后,松手减速,结束时:

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {

        

    }

    //拖拽结束

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

        

    }

    //滚动动画结束

    func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {

        

    }

    //剩下的直接看文档吧,都是差不多的方法,读明白英语基本上就会用了。。。

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值