项目引导页并不难,使用 UICollectionView就可以完成,
1.首先获取应用程序的版本号,并存入本地,每次有新版本号,和存入本地的版本号,相比较
fileprivate func setupRootViewController() { window = UIWindow(frame: UIScreen.main.bounds)
print(isNewVersion())
window?.rootViewController = isNewVersion() ? NewFeatureController() : UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
if isNewVersion() {
//此处应该加载用户操作教程
}else {
//此处加载广告页面
loadingAdvertisingPages()
}
window?.makeKeyAndVisible()
} /**
判断是否是新版本
*/
fileprivate func isNewVersion() -> Bool {
// 获取当前的版本号 let versionString = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String let currentVersion = Double(versionString)! // 获取到之前的版本号
let versionKey = "curVersion"
let sandboxVersion = UserDefaults.standard.double(forKey: versionKey) // 保存当前版本号
UserDefaults.standard.set(currentVersion, forKey: versionKey)
UserDefaults.standard.synchronize() // 对比
return currentVersion > sandboxVersion
}
新建一个继承 UICollectionViewController 的类,具体的代码如下
import UIKit private let reuseIdentifier = "Cell" class NewFeatureController: UICollectionViewController {
fileprivate let itemCount = fileprivate var layout = UICollectionViewFlowLayout()
//MARK: - 系统回调函数
override func viewDidLoad() {
super.viewDidLoad() self.collectionView!.register(NewFeatureCell.self, forCellWithReuseIdentifier: reuseIdentifier)
self.collectionView?.isPagingEnabled = true
self.collectionView?.bounces = false
self.collectionView?.showsHorizontalScrollIndicator = false
self.collectionView?.backgroundColor = UIColor.white
layout.scrollDirection = UICollectionViewScrollDirection.horizontal layout.minimumLineSpacing =
layout.minimumInteritemSpacing =
layout.itemSize = UIScreen.main.bounds.size
} init() {
super.init(collectionViewLayout:layout)
} required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
} override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
} } // MARK: UICollectionViewDataSource
extension NewFeatureController { override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return itemCount
} override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! NewFeatureCell cell.imageIndex = String(indexPath.item)
cell.setIndexPath(indexPath: indexPath, count: itemCount)
return cell } }
import UIKit class NewFeatureCell: UICollectionViewCell { //MARK: - 懒加载属性
fileprivate lazy var imageView: UIImageView = UIImageView() fileprivate lazy var startButton: UIButton = UIButton()
var imageName: String? var imageIndex: String? { didSet { let screenH = UIScreen.main.bounds.height //加载不同的图片
if screenH == {
imageName = imageIndex!+"welcome1136"
}else if screenH == {
imageName = imageIndex!+"welcome1334"
}else {
imageName = imageIndex!+"welcome1472"
} imageView.image = UIImage(named: imageName!) }
} //MARK: - 构造函数 override init(frame: CGRect) {
super.init(frame: frame) setupUI()
} required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
} } //MARK: - 设置 UI界面相关
extension NewFeatureCell { fileprivate func setupUI() { startButton.setTitle("开始全新体验", for: .normal)
startButton.setTitleColor(UIColor.orange, for: .normal)
startButton.sizeToFit()
startButton.isHidden = true
startButton.addTarget(self, action: #selector(NewFeatureCell.startBtnClick), for: .touchUpInside)
self.contentView .addSubview(imageView)
self.contentView.addSubview(startButton) } //布局子控件的 frame
override func layoutSubviews() {
super.layoutSubviews()
imageView.frame = self.bounds startButton.center = CGPoint(x: self.bounds.width * 0.5, y: self.bounds.height * 0.9)
} func setIndexPath(indexPath: IndexPath, count: Int) {
if indexPath.item == count- {
startButton.isHidden = false
}else {
startButton.isHidden = true
}
} } //MARK: - 事件的点击
extension NewFeatureCell { @objc fileprivate func startBtnClick() {
UIApplication.shared.keyWindow?.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController() }
}