博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[iOS] App引导页的简单实现 (Swift 2)
阅读量:6624 次
发布时间:2019-06-25

本文共 2543 字,大约阅读时间需要 8 分钟。

转载请注明出处:

已更新至 Xcode7.2、Swift2.1

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

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

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // 得到当前应用的版本号 let infoDictionary = NSBundle.mainBundle().infoDictionary let currentAppVersion = infoDictionary!["CFBundleShortVersionString"] as! String // 取出之前保存的版本号 let userDefaults = NSUserDefaults.standardUserDefaults() let appVersion = userDefaults.stringForKey("appVersion") let storyboard = UIStoryboard(name: "Main", bundle: nil) // 如果 appVersion 为 nil 说明是第一次启动;如果 appVersion 不等于 currentAppVersion 说明是更新了 if appVersion == nil || appVersion != currentAppVersion { // 保存最新的版本号 userDefaults.setValue(currentAppVersion, forKey: "appVersion") let guideViewController = storyboard.instantiateViewControllerWithIdentifier("GuideViewController") as! GuideViewController self.window?.rootViewController = guideViewController } return true }

GuideViewController中,我们用UIScrollView来装载我们的引导页:

class GuideViewController: UIViewController {    @IBOutlet weak var pageControl: UIPageControl! @IBOutlet weak var startButton: UIButton! private var scrollView: UIScrollView! private let numOfPages = 3 override func viewDidLoad() { super.viewDidLoad() let frame = self.view.bounds scrollView = UIScrollView(frame: frame) scrollView.pagingEnabled = true scrollView.showsHorizontalScrollIndicator = false scrollView.showsVerticalScrollIndicator = false scrollView.scrollsToTop = false scrollView.bounces = false scrollView.contentOffset = CGPointZero // 将 scrollView 的 contentSize 设为屏幕宽度的3倍(根据实际情况改变) scrollView.contentSize = CGSize(width: frame.size.width * CGFloat(numOfPages), height: frame.size.height) scrollView.delegate = self for index in 0..
Bool { return true } }

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

// MARK: - UIScrollViewDelegateextension GuideViewController: UIScrollViewDelegate { func scrollViewDidScroll(scrollView: UIScrollView) { let 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.2) { self.startButton.alpha = 0.0 } } } }

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

最终效果如下:

GuideScreenshot.gif

Github地址:

文/老初(简书作者)
原文链接:http://www.jianshu.com/p/024dd2d6e6e6
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
你可能感兴趣的文章
I.MX6 天嵌 E9 U-boot menu hacking
查看>>
Eclipse中Android项目引用其他项目时链接源码的方法
查看>>
Mac PD虚拟机卸载删除
查看>>
java中String、StringBuffer、StringBuilder的区别
查看>>
EL 表达式
查看>>
WPF水珠效果按钮组
查看>>
一个不错的命令行解析类
查看>>
I.MX6 FFmpeg 录制视频
查看>>
VHDL语言中buffer与inout的区别
查看>>
关于OSPF的一些问题
查看>>
OpenCASCADE Shape Location
查看>>
squid的正向代理和反向代理
查看>>
重磅消息nginx支持js语言
查看>>
linux下命令与文件的查询
查看>>
第8章6节MonkeyRunner启动运行过程-启动Monkey 3
查看>>
SEO意识的网站设计:设计和SEO的完美结合可能么?
查看>>
IP 算法
查看>>
spring 自定义标签
查看>>
curl命令使用实例
查看>>
mysql设置密码,查询帮助,密码找回
查看>>