美文网首页
swift UIScrollView

swift UIScrollView

作者: 哎呦我去叫什么呢 | 来源:发表于2020-07-22 16:23 被阅读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时,不调用该方法
        }

    相关文章

      网友评论

          本文标题:swift UIScrollView

          本文链接:https://www.haomeiwen.com/subject/pojykktx.html