swift:简单使用翻页控制器UIPageViewController
生活随笔
收集整理的這篇文章主要介紹了
swift:简单使用翻页控制器UIPageViewController
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、小敘
UIPageViewController是一個實現圖書閱讀的控制器,使用它可以設置書脊位置、單雙頁、過渡效果等,它是通過代理的方式來實現翻頁,也即上一頁、下一頁。最終這個UIPageViewController被包裝后添加到當前控制器即可。
?
二、直接上代碼
// // ViewController.swift // PageViewControllerDemo // // Created by 夏遠全 on 2017/1/19. // Copyright ? 2017年 夏遠全. All rights reserved. // import UIKitclass ViewController: UIViewController,UIPageViewControllerDelegate,UIPageViewControllerDataSource {//定義UIPageViewController和內容數組var pageController:UIPageViewController!var pageContent:[String] = [String]()override func viewDidLoad() {super.viewDidLoad()//初始化UIPageViewController//transitionStyle: 翻頁效果(卷起來翻卷、水平活動翻卷)//navigationOrientation:翻頁方向(水平方向、豎直方向)//options: 這是一個字典,設置翻頁控制器的書脊位置(none/min/mid/max)pageController = UIPageViewController.init(transitionStyle: .pageCurl, navigationOrientation: .horizontal, options: [UIPageViewControllerOptionSpineLocationKey:NSNumber(value:UIPageViewControllerSpineLocation.min.rawValue)])pageController.view.frame = self.view.bounds//設置代理,提供展示相關的信息和接收手勢發起的轉換的通知pageController.delegate = self//設置數據源,提供展示的內容pageController.dataSource = self//創建顯示內容 self.createContentPages()//初始化內容控制器let initalViewController = self.viewControllerAtIndex(index: 0)pageController.setViewControllers([initalViewController!], direction: .forward, animated: false) { (b:Bool) in//UIPageController必須放在Controller Container中 self.addChildViewController(self.pageController)self.view.addSubview(self.pageController.view)self.pageController.didMove(toParentViewController: self)}}//自定義方法,創建顯示視圖func viewControllerAtIndex(index:Int) -> ContentViewController? {if self.pageContent.count == 0 || index > self.pageContent.count {return nil}let dataViewController = ContentViewController()dataViewController.dataObject = self.pageContent[index]dataViewController.loadHTMLContent()return dataViewController}//自定義方法,獲取viewController的頁碼func indexOfViewController(viewControler:ContentViewController) -> Int {return self.pageContent.index(of: viewControler.dataObject!)!}//自定義方法,創建顯示內容func createContentPages() -> Void {for i in 1..<11 {let contentString = "<html><head></head><body><h1>《俠客行》</h1><p>第\(i)頁</p></body></html>"pageContent.append(contentString)}}//實現UIPageViewControllerDeleagte代理方法//將要翻頁 func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {print("started")}//翻頁結束 func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {print("finished")}//設置書脊位置func pageViewController(_ pageViewController: UIPageViewController, spineLocationFor orientation: UIInterfaceOrientation) -> UIPageViewControllerSpineLocation {return .min}//設置設備支持方向func pageViewControllerSupportedInterfaceOrientations(_ pageViewController: UIPageViewController) -> UIInterfaceOrientationMask {return .all}//設置優選方向func pageViewControllerPreferredInterfaceOrientationForPresentation(_ pageViewController: UIPageViewController) -> UIInterfaceOrientation {return .portrait}//實現UIPageViewControllerDataSource數據源方法//返回總頁數func presentationCount(for pageViewController: UIPageViewController) -> Int {return self.pageContent.count}//向前翻頁func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {//獲取當前viewController的頁碼var index:Int = self.indexOfViewController(viewControler: viewController as! ContentViewController)//如果是第0頁,返回nilif index == 0 || (index == NSNotFound) {return nil}index -= 1return self.viewControllerAtIndex(index: index)}//向后翻頁func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {//獲取當前viewController的頁碼var index:Int = self.indexOfViewController(viewControler: viewController as! ContentViewController)if index == NSNotFound {return nil}index += 1//如果是最后一張,返回nilif index == self.pageContent.count {return nil}return self.viewControllerAtIndex(index: index)} }?
?
三、效果(點擊屏幕實現翻頁)
?
?
總結
以上是生活随笔為你收集整理的swift:简单使用翻页控制器UIPageViewController的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习String的内容
- 下一篇: 运行耗时统计