swift UIScrollView

2020-07-22  本文已影响0人  哎呦我去叫什么呢
loginScrollView = UIScrollView()
        view.addSubview(loginScrollView)
        loginScrollView.mas_makeConstraints { (make) in
            make?.top.equalTo()(view.mas_top)?.offset()(headSize(size: 0))
            make?.bottom.equalTo()(view.mas_bottom)?.offset()(footSize(size: 0))
            make?.left.equalTo()(view.mas_left)
            make?.width.mas_equalTo()(kScreenWidth)
        }
        loginScrollView.backgroundColor = .red
        // 可以滚动的区域
        loginScrollView.contentSize = CGSize(width: kScreenWidth, height: kScreenHeight * 2)
        // 设置是否翻页
//        loginScrollView.isPagingEnabled = true
        // 显⽰示⽔水平滚动条
        loginScrollView.showsHorizontalScrollIndicator = true
        // 显⽰示垂直滚动条
        loginScrollView.showsVerticalScrollIndicator = true
        // 滚动条样式
        loginScrollView.indicatorStyle = UIScrollView.IndicatorStyle.black
        // 设置回弹效果
        loginScrollView.bounces = false
        // 设置scrollView可以滚动
        loginScrollView.isScrollEnabled = true
        // 当scrollsToTop=true时,点击设备状态栏会自动滚动到顶部
        loginScrollView.scrollsToTop = true
        // 缩放的最小比例
        loginScrollView.minimumZoomScale = 0.3
        // 放大的最大比例
        loginScrollView.maximumZoomScale = 3.0
        // 缩放回弹
        loginScrollView.bouncesZoom = true
pageControl = UIPageControl()
        loginScrollView.addSubview(pageControl)
        // 页码控制器
        pageControl.frame = CGRect(x: 0, y: kScreenHeight-50, width: kScreenWidth, height: 50)
        pageControl.backgroundColor = UIColor.gray
        // 总共有多少页
        pageControl.numberOfPages = 6
        // 当前页码
        pageControl.currentPage = 3
        // 添加点击事件
        pageControl.addTarget(self, action: #selector(pageControlClick), for: .valueChanged)
        view.addSubview(pageControl)

实现方法

    @objc func pageControlClick(pageControl:UIPageControl) {
          UIView.animate(withDuration: 0.3) {
            self.loginScrollView.contentOffset = CGPoint(x: 0, y: CGFloat(pageControl.currentPage) * self.loginScrollView.frame.size.height)
          }
      }
    
      func scrollViewDidScroll(_ scrollView: UIScrollView) {
//          print("scrollView滚动时调用,只要offset的值发生变化就调用")
          
          // 函数floor的作用是返回比小的整数
        var page = floor((scrollView.contentOffset.y)/scrollView.frame.size.height)

        self.pageControl.currentPage = Int(page)
          
      }
  
    func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
//        print("当将要开始缩放时,执行该方法。一次有效缩放就只执行一次。")
    }
       
    func scrollViewDidZoom(_ scrollView: UIScrollView) {
//        print("当scrollView缩放时,调用该方法。在缩放过程中,会多次调用")
    }
       
    func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) {
//        print("当缩放结束后,并且缩放大小回到minimumZoomScale与maximumZoomScale之间后(我们也许会超出缩放范围),调用该方法。")
    }
       
    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
//        print("返回将要缩放的UIView对象。要执行多次")
        return scrollView.subviews.first
    }
       
    func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool {
//        print("指示当用户点击状态栏后,滚动视图是否能够滚动到顶部。")// 需要设置滚动视图的属性:scrollView.scrollsToTop=true
        return true
    }
       
    func scrollViewDidScrollToTop(_ scrollView: UIScrollView) {
//        print("当滚动视图滚动到最顶端后,执行该方法")
    }
       
    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
//        print("当开始滚动视图时,执行该方法。一次有效滑动只执行一次。")
    }
       
    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
//        print("滑动视图,当手指离开屏幕那一霎那,调用该方法。一次有效滑动只执行一次。")
    }
       
    func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
//        print("滑动减速时调用该方法。")
    }
       
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
//        print("滚动视图减速完成,滚动将停止时,调用该方法。一次有效滑动只执行一次。")
    }
    
    func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
//        print("当滚动视图动画完成后,调用该方法,如果没有动画,那么该方法将不被调用")
    }

     
    func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
//        print("滑动scrollView,并且手指离开时执行。一次有效滑动只执行一次。") //当pagingEnabled属性为true时,不调用该方法
    }
上一篇下一篇

猜你喜欢

热点阅读