如何使用swift使用页面控件创建滚动视图?

发布于 2021-01-31 23:57:07

我正在尝试创建具有多个视图的页面视图控制器。我想要一个简单的代码示例,它将使用 UIPageViewController

关注者
0
被浏览
285
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    import UIKit

    class DummyVC: UIViewController, UIScrollViewDelegate {
    
        let scrollView = UIScrollView(frame: CGRect(x:0, y:0, width:320,height: 300))
        var colors:[UIColor] = [UIColor.red, UIColor.blue, UIColor.green, UIColor.yellow]
        var frame: CGRect = CGRect(x:0, y:0, width:0, height:0)
        var pageControl : UIPageControl = UIPageControl(frame: CGRect(x:50,y: 300, width:200, height:50))
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            configurePageControl()
    
            scrollView.delegate = self
            scrollView.isPagingEnabled = true
    
            self.view.addSubview(scrollView)
            for index in 0..<4 {
    
                frame.origin.x = self.scrollView.frame.size.width * CGFloat(index)
                frame.size = self.scrollView.frame.size
    
                let subView = UIView(frame: frame)
                subView.backgroundColor = colors[index]
                self.scrollView .addSubview(subView)
            }
    
            self.scrollView.contentSize = CGSize(width:self.scrollView.frame.size.width * 4,height: self.scrollView.frame.size.height)
            pageControl.addTarget(self, action: #selector(self.changePage(sender:)), for: UIControlEvents.valueChanged)
    
        }
    
        func configurePageControl() {
            // The total number of pages that are available is based on how many available colors we have.
            self.pageControl.numberOfPages = colors.count
            self.pageControl.currentPage = 0
            self.pageControl.tintColor = UIColor.red
            self.pageControl.pageIndicatorTintColor = UIColor.black
            self.pageControl.currentPageIndicatorTintColor = UIColor.green
            self.view.addSubview(pageControl)
    
        }
    
        // MARK : TO CHANGE WHILE CLICKING ON PAGE CONTROL
        func changePage(sender: AnyObject) -> () {
            let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width
            scrollView.setContentOffset(CGPoint(x:x, y:0), animated: true)
        }
    
        func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    
            let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
            pageControl.currentPage = Int(pageNumber)
        }
    
    }
    


推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看