[Swift通天遁地]九、拔剑吧-(13)创建页面的景深视差滚动效果

景深视差经常被应用在游戏项目中。

本文将演示创建一个简单的景深视差滚动效果

首先确保已经安装了所需的第三方类库。双击查看安装配置文件【Podfile】

1 platform :ios, '12.0'
2 use_frameworks!
3 
4 target 'DemoApp' do
5     source 'https://github.com/CocoaPods/Specs.git'
6     pod 'Presentation'
7 end

根据配置文件中的相关设置,安装第三方类库。

安装完成之后,双击打开项目文件【DemoApp.xcodeproj】

在左侧的项目导航区,打开应用程序的代理文件【AppDelegate.swift】。

  1 import UIKit
  2 //引入已经安装的第三方类库
  3 import Presentation
  4 
  5 @UIApplicationMain
  6 class AppDelegate: UIResponder, UIApplicationDelegate {
  7 
  8     var window: UIWindow?
  9 
 10     //添加一个由第三方类库提供的控制器对象,作为当前类的一个属性。
 11     lazy var presentationController: PresentationController =
 12         {
 13             //对控制器进行初始化操作,
 14             let controller = PresentationController(pages: [])
 15             //并隐藏导航条的标题
 16             controller.setNavigationTitle = false
 17             
 18             //返回设置好的控制器对象
 19             return controller
 20     }()
 21     
 22     //添加一个导航条按钮控件,作为导航条左侧的按钮。
 23     lazy var leftButton: UIBarButtonItem = { [uNowned self] in
 24         //对导航条按钮进行初始化操作,
 25         //并设置它的标题,样式和动作属性。
 26         let button = UIBarButtonItem(title: "PrevIoUs page", style: .plain,
 27                                      target: self.presentationController,
 28                                      action: #selector(PresentationController.moveBack))
 29         
 30         //设置标题的前景颜色为白色
 31         button.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.white], for: .normal)
 32         //返回设置好的按钮控件
 33         return button
 34         }()
 35     
 36     //创建另一个导航条按钮控件,作为导航条右侧的按钮。
 37     lazy var rightButton: UIBarButtonItem = { [uNowned self] in
 38         //对导航条按钮进行初始化操作,并设置它的标题、样式和动作属性。
 39         let button = UIBarButtonItem(title: "Next page", style: .plain,
 40                                      target: self.presentationController,
 41                                      action: #selector(PresentationController.moveForward))
 42         
 43         //设置标题的前景颜色为白色,
 44         button.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.white], for: .normal)
 45         //并返回设置好的按钮控件
 46         return button
 47         }()
 48     
 49 
 50     //在应用程序加载完成的方法中,
 51     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
 52         // Override point for customization after application launch.
 53         
 54         //设置导航条的前景颜色为橙色。
 55         UINavigationBar.appearance().barTintColor = UIColor.orange
 56         //设置导航条的颜色为透明
 57         UINavigationBar.appearance().barStyle = .blackTranslucent
 58         
 59         //设置导航控制器左侧的导航按钮。
 60         presentationController.navigationItem.leftBarButtonItem = leftButton
 61         //设置导航控制器右侧的导航按钮。
 62         presentationController.navigationItem.rightBarButtonItem = rightButton
 63         
 64         //调用两个方法
 65         //方法一:设置滚动的标题
 66         configureSlides()
 67         //方法二:设置具有景深效果的背景视图
 68         configureBackground()
 69         
 70         //初始化一个和屏幕尺寸相同的窗口对象
 71         window = UIWindow(frame: UIScreen.main.bounds)
 72         //初始化一个导航控制器对象,作为窗口对象的根视图控制器。
 73         let navigationController = UINavigationController(rootViewController: self.presentationController)
 74         //设置导航控制器的背景颜色为橙色。
 75         navigationController.view.backgroundColor = UIColor.orange
 76         
 77         //设置窗口对象的根视图控制器,
 78         window?.rootViewController = navigationController
 79         //并使窗口对象作为应用程序的主窗口
 80         window?.makeKeyAndVisible()
 81         
 82         return true
 83     }
 84 
 85     //添加一个方法,用来配置滚动标题
 86     func configureSlides()
 87     {
 88         //初始化一个字体对象
 89         let font = UIFont(name: "ArialRoundedMTBold", size: 32.0)!
 90         //初始化一个颜色对象
 91         let color = UIColor.white
 92         //初始化一个段落样式对象,
 93         let paragraphStyle = NSMutableParagraphStyle()
 94         //并设置段落的对齐方式为居中
 95         paragraphStyle.alignment = .center
 96         
 97         //初始化一个属性常量,作为标题文字的字体、颜色和段落样式。
 98         let attributes = [NSAttributedString.Key.font: font, NSAttributedString.Key.foregroundColor: color, NSAttributedString.Key.paragraphStyle: paragraphStyle]
 99         
100         //初始化一个字符串数组,作为五个滚动标题内容。
101         let titles = ["Tutorial on how to make a profit", "Step I", "Step II", "Step III", "Thanks"].map {
102             //给每个滚动标题,设置相同的外观样式。
103             Content.content(forTitle: $0, attributes: attributes)
104         }
105         
106         //初始化另一个字符串数组,作为滚动子标题内容。
107         //并同样设置子标题的外观样式。
108         let texts = ["", "Collect underpants

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...