转载自:http://blog.csdn.net/u014455765/article/details/49622947

现在很多iOS开发人员都从oc转向Swift, swift 也必将成为ios开发的潮流和趋势。

在此和大家一起分享程序进入的欢迎界面,让app在用户第一次打开或者是更新之后进入时有欢迎界面了解app的内容和活动。

1、准备4张引导页的图片拖动到Images.xcassets文件中。这里写图片描述



2、创建一个ViewController.swift文件。//

//  ViewController.swift
// 欢迎界面
//
// Created by Mac Tylar on 15-11-2.
// Copyright (c) 2015年 Mac Tylar. All rights reserved.
// import UIKit class ViewController: UIViewController, UIScrollViewDelegate {
// 闭包属性 用于跳转页面
var startClosure: (()-> Void)?
// 创建scrollView
let scrollView = UIScrollView()
// 创建pageController
let pageControl = UIPageControl()
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.whiteColor()
// 设置scrollView的大小
scrollView.frame = self.view.bounds
// 设置scrollView的内容大小,横向宽度等于图片数目乘以宽度,高度为0 不滚动
scrollView.contentSize = CGSize(width: self.view.frame.width*4, height: 0)
// 设置分页
scrollView.pagingEnabled = true
// 去除弹簧效果
scrollView.bounces = false
// 去除横向的滚动条
scrollView.showsHorizontalScrollIndicator = false
// 设置代理
scrollView.delegate = self
// 设置居中和坐标
pageControl.center = CGPoint(x: self.view.frame.width/2, y: self.view.frame.height-50)
// 设置当前页面指示颜色
pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
// 设置指示颜色
pageControl.pageIndicatorTintColor = UIColor.redColor()
// 设置页数
pageControl.numberOfPages = 4
// pageControl的值变动时调用方法
pageControl.addTarget(self, action: "scrollViewDidEndDecelerating", forControlEvents: UIControlEvents.ValueChanged)
// 添加背景图片
for var i = 0 ; i < 4 ; i++ {
let image = UIImage(named: "\(i+1)")
let imageView = UIImageView(frame: self.view.frame)
imageView.image = image
var frame = imageView.frame
// x轴等于当前的i乘以宽度 等于偏移宽度
frame.origin.x = CGFloat(i) * frame.size.width
// 设置imageView的frame
imageView.frame = frame
// 给最后一个导航页上添加一个进入按钮 进入主页
if i == 3 {
let btn = UIButton(frame: CGRect(x: self.view.frame.width/2-60, y: self.view.frame.height/2+100, width: 120, height: 40))
btn.layer.cornerRadius = 10
btn.backgroundColor = UIColor.redColor()
btn.setTitle("进入", forState: UIControlState.Normal)
btn.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
btn.setTitleColor(UIColor.grayColor(), forState: UIControlState.Highlighted)
btn.addTarget(self, action: "startAction:", forControlEvents: UIControlEvents.TouchUpInside)
imageView.addSubview(btn)
imageView.userInteractionEnabled = true
}
// 添加子视图
scrollView.addSubview(imageView)
} // 添加子视图
self.view.addSubview(scrollView)
self.view.addSubview(pageControl)
// Do any additional setup after loading the view, typically from a nib.
} func startAction(sender: UIButton) {
startClosure!()
} // pageControl的值变动时调用的方法
func scrollViewDidEndDecelerating(scroll: UIScrollView) {
// 获取index
let index = scrollView.contentOffset.x/self.view.frame.width
// 设置当前页面
pageControl.currentPage = Int(index)
// 添加子视图
self.view.addSubview(pageControl)
} override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

3、在AppDelegate类中添加application方法的代码块。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

// NSUserDefaults.standardUserDefaults().removeObjectForKey(“started”)
// 判断是否时第一次打开app
var started = NSUserDefaults.standardUserDefaults().valueForKey(“started”) as? String
if started == nil {
let vc = ViewController()
self.window?.rootViewController = vc
vc.startClosure = { ()-> Void in
self.startApp()
NSUserDefaults.standardUserDefaults().setValue(“start”, forKey: “started”)
NSUserDefaults.standardUserDefaults().synchronize()
}
} else {
self.startApp()
}
return true
} // 启动程序
func startApp() {
let rootVc = centerViewViewController()
// 给viewController配置导航控制器
let navi = UINavigationController(rootViewController: rootVc)
self.window?.rootViewController = navi
}

注意:centerViewViewController()是一个viewControler的类。

swift 编写欢迎界面-- ios开发的更多相关文章

  1. 【swift,oc】ios开发中巧用自动布局设置自定义cell的高度

    ios开发中,遇到自定义高度不定的cell的时候,我们通常的做法是抽取一个frame类,在frame类中预算好高度,再返回. 但是苹果出来自动布局之后...春天来了!!来看看怎么巧用自动布局设置自定义 ...

  2. Swift - 使用HTML5进行iOS开发(将HTML5打包成iOS应用)

    最近越来越流行使用HTML5进行跨平台应用开发,先不说运行效率如何.从人力成本来说,只要写一套html页面就可以打包发布到安卓和iOS等多个平台,确实会省下不少时间和人力(这个领导最喜欢了). 下面简 ...

  3. 【Swift 2.2】iOS开发笔记(三)

    1.UITableView 中调用 UIButton 的 setTitle 会闪 滚动列表时比较明显,解决办法: buttonType 改成 custom 即可,但是这样一来 UIButton 的高亮 ...

  4. 【Swift 3.1】iOS开发笔记(四)

    一.唱片旋转效果(360°无限顺时针旋转) func animationRotateCover() { coverImageView.layer.removeAllAnimations() let a ...

  5. 从Swift学习iOS开发的路线指引

    本文主要是楼主近段时间从Swift语法开始自学iOS开发的流程总结,PS 一个前提,楼主的生存环境中买不到一本iOS开发中文教程,所以基本都是百度摸索出来的 >_< 主要流程 学习Swif ...

  6. 我推荐的一些iOS开发书单

    文/叶孤城___(简书作者)原文链接:http://www.jianshu.com/p/2fa080673842著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 上次发了一下比较不错的i ...

  7. 新手必看,史上最全的iOS开发教程集锦,没有之一!

    最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...

  8. Android与Swift iOS开发:语言与框架对比

    Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有Sw ...

  9. iOS - Swift iOS 开发体系

    1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation ...

随机推荐

  1. 【BZOJ1305】跳舞(网络流)

    [BZOJ1305]跳舞(网络流) 题面 Description 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲.有一 ...

  2. 【NOIP2013】华容道(最短路)

    题目戳我 懒得粘贴题目了..就这要凑合一下吧... 题解 反正棋盘的状态不会变的... 所以,预处理一下??? 恩,如果一个棋子要移动到某个目标位置的话, 可以看成只有空格和这个子要动呀(其他的有区别 ...

  3. Poj3678:Katu Puzzle

    大概题意 有\(n\)个数,可以为\(0/1\),给\(m\)个条件,表示某两个数经过\(or, and, xor\)后的数是多少 判断是否有解 Sol \(2-SAT\)判定 建图 # includ ...

  4. 身份证号码的正则表达式及验证详解(JavaScript,Regex)

    简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案.本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案. 身份证号码说明 居民身份证号码,正确.正式的称谓应该是&q ...

  5. JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别

    JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别   关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来 ...

  6. eclipse热部署web项目

    一.选中JavaEE视图 因为在普通的Java视图下,窗口下方没有server选项卡 二.双击Tomcat 注意:可能很多人当然包括我一开始的时候,都是喜欢右键Tomcat然后Add and remo ...

  7. 深入理解Java虚拟机到底是什么

    摘自:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到 ...

  8. kali linux安装搜狗输入法的方法

    kali linux安装搜狗输入法比较麻烦,因为有很多依赖项,不过安装好就很好用,觉得麻烦的一般安装ibus,经典,也常更新. 下面就说说怎么安装搜狗输入法: 先去http://http.kali.o ...

  9. sql数据库中日期函数---2017-04-12

    一.SQLServer时间日期函数详解 1.  当前系统日期.时间 select getdate() 2. dateadd      在向指定日期加上一段时间的基础上,返回新的 datetime 值 ...

  10. 自己动手写泛型dao

    在经过一系列的问题得到解决之后,泛型dao终于写出来了.泛型dao相比于以前写的dao最大的好处就是,大大提高了代码的复用性,以往我们要对数据库中表中的数据进行操作的时候,每张表都需要写一个dao来操 ...