123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- //
- // GuidePageView.swift
- // RainbowPlanet
- //
- // Created by 南鑫林 on 2019/8/14.
- // Copyright © 2019 RainbowPlanet. All rights reserved.
- //
- import UIKit
- import FSPagerView
- class GuidePageView: UIView {
-
- deinit {
- NXLLog("deinit")
- }
- /// 图片数组
- private var images : Array<String>?
-
- override init(frame: CGRect) {
- super.init(frame: frame)
- }
-
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- init(frame:CGRect,images:Array<String>?) {
- self.init()
- self.images = images
- self.frame = frame
- setupViews()
- setupLayouts()
- }
-
-
- func setupViews() {
- addSubview(pagerView)
- addSubview(pageControl)
- }
-
- func setupLayouts() {
- pagerView.snp.makeConstraints { (make) in
- make.edges.equalToSuperview()
- }
-
- let pageControlWidth = CGFloat((self.images?.count)! - 1) * 8 + CGFloat((self.images?.count)! - 1) * 10 + 8
-
- pageControl.snp.makeConstraints { (make) in
- make.centerX.equalToSuperview()
- make.bottom.equalTo(-50)
- make.height.equalTo(8)
- make.width.equalTo(pageControlWidth)
- }
- }
-
- private lazy var pagerView: FSPagerView = {
- let pagerView = FSPagerView(frame: CGRect.zero)
- pagerView.backgroundColor = kf7f8faColor
- pagerView.delegate = self
- pagerView.dataSource = self
- pagerView.scrollDirection = .horizontal
- pagerView.bounces = false
- pagerView.isInfinite = false
- pagerView.automaticSlidingInterval = 0
- return pagerView
- }()
-
- private lazy var pageControl: NXLPageControl = {
- let pageControl = NXLPageControl()
- pageControl.numberOfPages = self.images?.count ?? 0
- pageControl.pointSize = CGSize.init(width: 8, height: 8)
- pageControl.currentWidthMultiple = 1//当前点的宽度为其他点的3倍
- pageControl.localPointSpace = 10
- pageControl.currentColor = kffffffColor
- pageControl.otherColor = kffffffColor.withAlphaComponent(0.3)
- pageControl.clickPoint { _ in }
- return pageControl
- }()
-
- //MARK: - 移除所有的View
- private func removeGuideViewFromSupview() {
- UIView.animate(withDuration: 1.0, delay: 0, options: UIView.AnimationOptions.curveEaseOut, animations: { [weak self] in
- // WRNavigationBar.defaultStatusBarStyle = .default
- self?.alpha = 0.0
- let transform = CATransform3DScale(CATransform3DIdentity, 1.5, 1.5, 1.0)
- self?.layer.transform = transform
- }) { [weak self] (_) in
- self?.removeFromSuperview()
- }
- }
-
- class func guidePageView(images:Array<String>?) {
- if UserDefaults.isFirstLaunchOfNewVersion() {
- let window = UIApplication.shared.windows.last
- let guidePageView = GuidePageView.init(frame:UIScreen.main.bounds,images: images)
- window?.addSubview(guidePageView)
- }else {
- // 启动页
- kAppDelegate.setStartupPageView()
- }
- }
-
- }
- extension GuidePageView :FSPagerViewDataSource,FSPagerViewDelegate {
- func numberOfItems(in pagerView: FSPagerView) -> Int {
- return images?.count ?? 0
- }
- func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
- let cell = GuidePageViewCell.cellWith(pagerView: pagerView, index: index)
- cell.images = images
- cell.startClosure = {
- [weak self] in
- self?.removeGuideViewFromSupview()
- }
- return cell
- }
- func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) {
- pagerView.deselectItem(at: index, animated: true)
- }
-
- func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) {
- self.pageControl.currentPage = targetIndex
- if targetIndex == (images?.count ?? 1) - 1 {
- self.pageControl.isHidden = true
- }else {
- self.pageControl.isHidden = false
- }
- }
- func pagerViewDidEndScrollAnimation(_ pagerView: FSPagerView) {
- self.pageControl.currentPage = pagerView.currentIndex
- }
- }
|