日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

swift:简单使用翻页控制器UIPageViewController

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。