zoukankan      html  css  js  c++  java
  • swift3.0 项目引导页

    项目引导页并不难,使用 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 = 4
    
        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 = 0
            layout.minimumInteritemSpacing = 0
            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 == 568  {
                    imageName = imageIndex!+"welcome1136"
                }else if screenH == 667 {
                    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-1 {
                startButton.isHidden = false
            }else {
                startButton.isHidden = true
            }
        }
        
    }
    
    //MARK: - 事件的点击
    extension NewFeatureCell {
    
        @objc fileprivate func startBtnClick() {
            UIApplication.shared.keyWindow?.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
            
        }
    }
  • 相关阅读:
    83. Remove Duplicates from Sorted List
    35. Search Insert Position
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    117. Populating Next Right Pointers in Each Node II
    116. Populating Next Right Pointers in Each Node
    111. Minimum Depth of Binary Tree
    169. Majority Element
    171. Excel Sheet Column Number
    190. Reverse Bits
  • 原文地址:https://www.cnblogs.com/ningmengcao-ios/p/6105673.html
Copyright © 2011-2022 走看看