[iOS]简单的APP引导页的实现 (Swift)

在第一次打开APP或者APP更新后通常用引导页来展示产品特性

我们用NSUserDefaults类来判断程序是不是第一次启动或是否更新,在AppDelegate.swift中加入以下代码:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.

    // 得到当前应用的版本号
    let infoDictionary = NSBundle.mainBundle().infoDictionary
    let currentAppVersion = infoDictionary!["CFBundleShortVersionString"] as String

    let userDefaults = NSUserDefaults.standardUserDefaults()
    let appVersion = userDefaults.stringForKey("appVersion")

    var storyboard = UIStoryboard(name: "Main", bundle: nil)

    // 如果appVersion为nil说明是第一次启动;如果appVersion不等于currentAppVersion说明是更新了
    if appVersion == nil || appVersion != currentAppVersion {

        userDefaults.setValue(currentAppVersion, forKey: "appVersion")

        var guidanceViewController = storyboard.instantiateViewControllerWithIdentifier("GuidanceVC") as GuidanceViewController
        self.window!.rootViewController = guidanceViewController
    }

    return true
}

在GuidanceViewController中,我们用UIScrollView来装载我们的引导页

import UIKit

class GuidanceViewController: UIViewController {

    var scrollView:  UIScrollView!

    @IBOutlet weak var pageControl: UIPageControl!
    @IBOutlet weak var startButton: UIButton!

    var numOfPages = 4

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        var frame = self.view.bounds

        scrollView = UIScrollView()
        scrollView.frame = self.view.bounds
        scrollView.delegate = self

        // scrollView的contentSize设为屏幕宽度的4(我这里设了四张引导页)倍
        scrollView.contentSize = CGSizeMake(frame.size.width * CGFloat(numOfPages), frame.size.height)

        scrollView.pagingEnabled = true
        scrollView.showsHorizontalScrollIndicator = false
        scrollView.showsVerticalScrollIndicator = false
        scrollView.scrollsToTop = false

        for i in 0..<numOfPages {
            var image = UIImage(named: "Guidance\(i + 1)")
            var imageView = UIImageView(image: image)

            imageView.frame = CGRectMake(frame.size.width * CGFloat(i), 0, frame.size.width, frame.size.height)

            scrollView.addSubview(imageView)
        }

        scrollView.contentOffset = CGPointZero

        self.view.addSubview(scrollView)

        startButton.alpha = 0.0

        // 将这两个控件拿到视图的最上面
        self.view.bringSubviewToFront(pageControl)
        self.view.bringSubviewToFront(startButton)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func start(sender: AnyObject) {
        var storyboard = UIStoryboard(name: "Main", bundle: nil)
        var viewController = storyboard.instantiateViewControllerWithIdentifier("LoginVC") as LoginViewController

        viewController.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
        presentViewController(viewController, animated: true, completion: nil)
    }
}

最后我们让GuidanceViewController遵循UIScrollViewDelegate协议,在这里判断是否滑动到最后一张以显示进入按钮。

// MARK: - UIScrollViewDelegate
extension GuidanceViewController: UIScrollViewDelegate {

    func scrollViewDidScroll(scrollView: UIScrollView) {
        var offset = scrollView.contentOffset
        // 随着滑动改变pageControl的状态
        pageControl.currentPage = Int(offset.x / view.bounds.width)
        // 因为currentPage是从0开始,所以numOfPages减1
        if pageControl.currentPage == numOfPages - 1 {

            UIView.animateWithDuration(0.5) {
                self.startButton.alpha = 1.0
            }

        } else {

            UIView.animateWithDuration(0.5) {
                self.startButton.alpha = 0.0
            }
        }
    }
}

在上面的代码中,为了显得自然我们给进入按钮加入了一点动画 :]

最终效果如下:

效果展示

时间: 2025-01-20 00:13:56

[iOS]简单的APP引导页的实现 (Swift)的相关文章

iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)

距上一篇博客"APP引导页的高度集成 - DHGuidePageHUD - ①"的发布有一段时间了, 后来又在SDK中补充了一些新的内容进去但是一直没来得及跟大家分享, 今天来跟大家分享一下, 还是一行代码搞定APP引导页, 废话不多说直接进入主题! 如果还没来得及看上一篇博客的话, 请大家点击这里进入: iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①) ????; (一)老规矩先上GitHub连接,给大家节省时间(分享是一种美德,S

iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD)

好长时间没更新博客, 是时候来一波干货分享了;APP引导页话不多说每一个APP都会用到,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了吧,当然这里讲的不是APP引导页的美化而是APP引导页的高度集成, 一行代码搞定APP引导页是不是太夸张?下面我们就来看一下吧! (一)先上GitHub连接,给大家节省时间(分享是一种美德,Star是一种鼓励; PS:大家别忘了抽出一秒钟的时间点击GitHub右上角的小星星?Star一下, 鼓励一下集成SDK的人??

用ViewPager为你的APP引导页添加视差滚动(Parallax Scrolling)效果

什么是视差滚动 视差滚动效果是怎样的 如何实现视差滚动效果 1 通过使用ViewPager实现页面的左右滑动 2 ViewPager有办法实现ParallaxScrolling吗 3 ViewPagerPageTransformer如何使用 由视差滚动效果引起的思考 以上仅是个人在开发中收集的经验欢迎大家拍砖 1. 什么是视差滚动? Parallax Scrolling(视差滚动),是一种常见的动画效果.视差一词来源于天文学,但在日常生活中也有它的身影.在疾驰的动车上看风景时,会发现越是离得近的

Android APP 引导页实现-第一次应用进入时加载

APP引导页是每个优质APP必备的元素,下面我们研究一下如何只在第一次进入应用时进行加载引导页的方法. 1.判断是否第一次进入应用的方法: package com.yayun.guide;    import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.

Android实战简易教程-第六十四枪(Android APP 引导页实现-第一次应用进入时加载)

APP引导页是每个优质APP必备的元素,下面我们研究一下如何只在第一次进入应用时进行加载引导页的方法. 1.判断是否第一次进入应用的方法: package com.yayun.guide; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bun

[iOS] App引导页的简单实现 (Swift 2)

转载请注明出处:http://www.jianshu.com/p/024dd2d6e6e6# 已更新至 Xcode7.2.Swift2.1 在第一次打开App或者App更新后通常用引导页来展示产品特性 我们用NSUserDefaults类来判断程序是不是第一次启动或是否更新,在 AppDelegate.swift中加入以下代码: func application(application: UIApplication, didFinishLaunchingWithOptions launchOpt

iOS App引导页功能实现

一.写作原因 以前都没有想着来写点东西,今天遇到件事情让我决定每次还是要做记录.因为以前自己可以轻松的完成pod spec的配置,但是今天在做的时候还是忘了遇到了很多坑.pod spec配置遇到的坑不在这里写,后面会单独写一点,但是内容不会太多.一是方便别人,二是方便自己. 第一次来发帖,写的不对的地方,请大神指出.我一定好好的努力修改并向大家学习,但是还是不太喜欢一惯的喷子.就像大家说的经典一样`close your mouth show me your code`,英文不好如果错了,大家见谅

iOS开发 UIScrollView制作APP引导页

http://jingyan.baidu.com/article/4dc40848a341dfc8d846f152.html 听语音 | 浏览:4606 | 更新:2015-02-10 12:14 | 标签:制作 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师傅最快的到家服务,最优质的电脑清灰! 应用程序APP一般都有引导页,引导页可以作为操作指南指导用户熟悉使用:也可以展现给用户,让用户了解APP的功能作用.引导页制作简单,一般只需要一组图片,再把图片组展现出来就可以了.展示图片组常

Android App引导页这些坑你自己犯过吗?

场景:測试机:华为荣耀6x 今天我自己掉入一个非常蠢蠢的坑,一个引导页搞了20多分钟.无论我怎么測试用真机还是模拟器都无法执行,可是我写的demo全然没问题,好无语,我都怀疑我是不是搞android,我去.一个简单的问题都不能解决?后来看了下自己真的傻逼了无语! 看下图 挖坑1 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTU5NTAzMjU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dis