景深视差经常被应用在游戏项目中。
首先确保已经安装了所需的第三方类库。双击查看安装配置文件【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