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

推荐答案

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)
    }

}

Swift相关问答推荐

macOS托盘应用程序中的列表显示奇怪

在SwiftUI中使用自定义图像填充列表行的正确方法

有没有一种方法可以迭代可编码的代码(例如,JSON解析中的每一项)?

如何在visionOS中定制悬停效果区域

出错-无法将季节类型的值转换为预期的参数类型';[水果]';

为什么我不能在这个 Swift 间接枚举中返回 self ?

ClosedRange.Swift 中 Int 的索引?

当模式以编程方式关闭时在父视图控制器中触发操作

ToolbarItem 包含在动画中但不应该包含在动画中

OSX 中的 Popover 无法确定透明度

可以使 Swift init 仅可用于 Objective C 吗?

是否可以利用 Codable 从 Dictionary 初始化符合类型

如何从数据中读取以空结尾的字符串?

在 Swift 中为(递归)扩展提供默认实例参数

如何在 Swift 中将 XPC 自定义类列入白名单?

阻止其他类型的键盘

无法从自定义动态框架(Swift)访问类

将项目引用添加到 Swift iOS XCode 项目并调试

将强制向下转换视为可选将永远不会产生零

如何交换快速数组中的元素?