Swift 使用UISCrollView展示多个视图控制

 

import UIKit

 

class PageViewController: UIViewController,UIScrollViewDelegate {

    var scrollView = UIScrollView()

    var pageControl = UIPageControl()

    var isPageControlUse = false //添加一个状态,用来标记页面的滑动状态

    

    override func viewDidLoad() {

        super.viewDidLoad()

        

        var rect = UIScreen.main.bounds

        let width :CGFloat = UIScreen.main.bounds.width

        let height : CGFloat = UIScreen.main.bounds.height

        

        scrollView.frame = rect

        scrollView.isPagingEnabled = true //设置按页显示

        scrollView.contentSize = CGSize(width: width * 2, height: height)

        scrollView.backgroundColor = UIColor.black

        scrollView.delegate = self

        

        let pcHei : CGFloat = 50.0

        let pcRect = CGRect(x: 0, y: height - pcHei, width: width, height: pcHei)

        

        pageControl.frame = pcRect

        pageControl.numberOfPages = 2

        pageControl.currentPage = 0

        pageControl.backgroundColor = UIColor.gray

        pageControl.addTarget(self, action: #selector(pageControlDidChange(sender:)), for: UIControl.Event.valueChanged)

        

        

        let firstVC = FirstViewController()

        rect.origin.x = 0.0

        firstVC.view.frame = rect

        

        let secondVC = SecondViewController()

        rect.origin.x = rect.size.width

        secondVC.view.frame = rect

        scrollView.addSubview(firstVC.view)

        scrollView.addSubview(secondVC.view)

        self.view.addSubview(scrollView)

        self.view.addSubview(pageControl)

 

    }

//    pageControl点击事件

    @objc private func pageControlDidChange(sender:AnyObject){

        let crtPage = (CGFloat)(pageControl.currentPage)

        var frame = scrollView.frame

        frame.origin.x = frame.size.width * crtPage

        frame.origin.y = 0

        scrollView.scrollRectToVisible(frame, animated: true)

        isPageControlUse = true

    }

    

    func scrollViewDidScroll(_ scrollView: UIScrollView) {

//        如果是通过页面控制器对象切换页面,则不执行后面的代码

        if(!isPageControlUse){

            let pageWith = scrollView.frame.size.width

            let page = floor((scrollView.contentOffset.x - pageWith/2)/pageWith)//-1~0

            pageControl.currentPage = Int(page + 1)

        }

    }

//    Decelerating停止减速

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {

        isPageControlUse = false;

    }

 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值