Swift - 启动时的向导页(新手引导)的制作

在很多iOS产品或者一些应用版本的升级中,新手指导都是一个常用的功能,通过说明页的左右滑动,可以很清晰的展示系统的一些功能特性。制作思路如下:

1,如何检测应用是第一次登陆启动

我们可以使用NSUserDefaults类来解决这个问题。其特点是不会因应用的关闭、系统的重启而丢失。所以可以用来标记是否启动过。

2,新手引导视图控制器我们使用UIScrollView

比如我们设置了一套新手引导图共三张,都添加到UIScrollView里,这时UIScrollView的内容宽度是3倍于照片或者屏幕的宽度。

3,为适应不同分辨率,需要设计几套不同尺寸的图

iOS图片资源的命名规则是:basename + screen size modifier + urischeme + orientation + scale + device + .ext

basename:文件名

screen size modifier:屏幕尺寸修饰符(iPhone5出现后才有,如 -568h)

urischeme:标识URI方案的字符串(一般情况不需要关心)

orientation:屏幕方向(横屏为-Landscape,竖屏为-Portrait)

scale:缩放尺寸(普通屏不需要,Retina屏为@2x,iPhone6后多了个@3x)

device:设备类型(~ipad表示供iPad使用)

.ext:文件扩展名(可以是png或其他格式)

尽管文件很复杂,但调用却很简单,只要写上basename.ext即可。

4,效果图如下:

  

5,文件结构如下:

6,入口类:AppDelegate.swift


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

import UIKit

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

    

    var window: UIWindow?

    

    func application(application: UIApplication,

        didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        // Override point for customization after application launch.

        //增加标识,用于判断是否是第一次启动应用...

        if (!(NSUserDefaults.standardUserDefaults().boolForKey("everLaunched"))) {

            NSUserDefaults.standardUserDefaults().setBool(true, forKey:"everLaunched")

            var  guideViewController = GuideViewController()

            self.window!.rootViewController=guideViewController;

            println("guideview launched!")

        }

        return true

    }

    

    func applicationWillResignActive(application: UIApplication) {

    }

    

    func applicationDidEnterBackground(application: UIApplication) {

    }

    

    func applicationWillEnterForeground(application: UIApplication) {

    }

    

    func applicationDidBecomeActive(application: UIApplication) {

    }

    

    func applicationWillTerminate(application: UIApplication) {

    }

}

7,向导页面:GuideViewController.swift


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

import UIKit

class GuideViewController:UIViewController,UIScrollViewDelegate

{

    var numOfPages = 3

    

    override func viewDidLoad()

    {

        var frame = self.view.bounds

        //scrollView的初始化

        var scrollView=UIScrollView()

        scrollView.frame=self.view.bounds

        scrollView.delegate = self

        //为了能让内容横向滚动,设置横向内容宽度为3个页面的宽度总和

        scrollView.contentSize=CGSizeMake(frame.size.width*CGFloat(numOfPages),frame.size.height)

        println("\(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 imgfile = "jianjie\(Int(i+1)).png"

            println(imgfile)

            var image = UIImage(named:"\(imgfile)")

            var imgView = UIImageView(image: image)

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

                frame.size.width,frame.size.height)

            scrollView.addSubview(imgView)

        }

        scrollView.contentOffset = CGPointZero

        self.view.addSubview(scrollView)

    }

    

    func scrollViewDidScroll(scrollView: UIScrollView!)

    {

        println("scrolled:\(scrollView.contentOffset)")

        var twidth = CGFloat(numOfPages-1) * self.view.bounds.size.width

        if(scrollView.contentOffset.x > twidth)

        {

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

            var viewController = mainStoryboard.instantiateInitialViewController() as UIViewController

            

            self.presentViewController(viewController, animated: true, completion:nil)

        }

    }

}

上一篇Swift - 设置程序的应用图标和启动界面

时间: 2024-10-22 18:17:27

Swift - 启动时的向导页(新手引导)的制作的相关文章

iOS App初次启动时的用户引导页制作实例分享

iOS App初次启动时的用户引导页制作实例分享 作者:老初 字体:[增加 减小] 类型:转载 时间:2016-03-09我要评论 这篇文章主要介绍了iOS App初次启动时的用户引导页制作实例分享,其中判断程序是否是第一次或版本更新以后第一次启动是一个关键点,需要的朋友可以参考下 应用程序APP一般都有引导页,引导页可以作为操作指南指导用户熟悉使用:也可以展现给用户,让用户了解APP的功能作用.引导页制作简单,一般只需要一组图片,再把图片组展现出来就可以了.展示图片组常用UIScrollVie

服务器启动时Webapp的web.xml中配置的加载顺序

一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二  Load-on-startup Lo

Linux系统开机启动时的工作原理

Linux系统开机启动时的工作原理也是深入了解Linux系统核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了.在BIOS将系统的控制权交给硬盘第一个扇区之后,就开始由Linux来控制系统了. 启动第二步--读取MB

【Android端 APP 启动时长获取】启动时长获取方案及具体实施

一.什么是启动时长? 1.启动时长一般包括三种场景,分别是:新装包的首次启动时长,冷启动时长.热启动时长 冷启动 和 热启动 : (1)冷启动:当启动应用时,后台没有该程序的进程,此时启动的话系统会分配一个新的进程给应用. (2)热启动:程序的进程依然存在,启动时通过已有进程启动进入到Activity显示页面的,就是热启动,或者从Android官网来看我们获取到的其实是温启动时长,就是Activity不存在的情况. (3)新装包的启动时长: 新装包的启动时长,预估是最长的,并且在5.0以下及5.

手机安全卫士------手机防盗页面之完成向导页面的UI布局和动画

实现逻辑: 用户点击对话框的确定按钮,跳转页面的时候判断用户此前是否设置过手机防盗功能 如果设置过,直接跳转到防盗页面 如果没设置过,进入设置向导页面,进行相应的配置. 设置向导页面的效果图: 功能的技术点: 1.自定义文字风格 2.自定义按钮的背景 3.界面切换的动画 4.滑动屏幕切换页面 自定义文字风格 由于布局中有很多文字的颜色.字号.上边距.左边距等属性是相同的,因此,自定义一个文字风格,降低编码工作量 具体代码如下: <style name="LostFindText"

android应用程序第一次启动时显示引导界面

市面上好多优秀的应用(举例新浪微博.UC浏览器)都采用了欢迎页面与使用向导的方式给用户带来了良好的用户体验. 一般来说用户第一次安装应用或者安装了新版本后第一次进入应用都会显示成 欢迎页面-使用向导-主界面 的方式 用户没有安装新版本或者不是第一次进入的时候都会显示成 欢迎页面-主界面的方式 想要实现这种不同的分支,我们就要使用一种变量来存储我们是否是第一次进入应用,当然这种变量不可能是存储在应用里,而是要存储在应用包名底下的文件中 那么我们就来看看实现这种变量存储和修改的步骤吧 1.在应用的欢

C#语言实现的向导页设计

本文的主要写了C#实现向导页的设计方法与注意事项 一.准备工作 第一步,建立一个Windows窗体应用程序,取名GuideTest 第二步,将主窗体取名FormMain,将StartPosition属性设定为CenterScreen 第三步,建立三个向导页窗体,分别取名FormGuidePage1.FormGuidePage2.FormGuidePage3,将它们的StartPosition属性都设定为CenterScreen.窗体上面放置四个按钮,分别为上一步(btnPrevious).下一步

安装mssql2008和启动时出现的问题及解决办法

(一) 安装sql server 2008 时, 提示错误:此计算机上安装了 Microsoft Visual Studio 2008 的早期版本. 请在安装 SQL Server 2008 前将 VS2008 升级到 SP1. 下载安装了VS2008 SP1 后还是提示这个错误. 解决方法: 修改注册表: 运行注册表,找到目录HKEYLocalMachine/Software/Microsoft/DevDiv ,重命名DevDiv 就可以了. sql安装完成后记得还原刚才重命名的目录,以免影响

linux 在启动时获得专用的缓冲

如果你真的需要一个大的物理上连续的缓冲, 最好的方法是在启动时请求内存来分配它. 在启动时分配是获得连续内存页而避开 get_free_pages 施加的对缓冲大小限制的唯一 方法, 不但最大允许大小还有限制的大小选择. 在启动时分配内存是一个"脏"技术, 因为 它绕开了所有的内存管理策略通过保留一个私有的内存池. 这个技术是不优雅和不灵活的, 但是它也是最不易失败的. 不必说, 一个模块无法在启动时分配内存; 只有直接连接到内 核的驱动可以这样做. 启动时分配的一个明显问题是对通常的