转载自: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. 结合实例分析Android MVP的实现

    最近阅读项目的源码,发现项目中有MVP的痕迹,但是自己却不能很好地理解相关的代码实现逻辑.主要原因是自己对于MVP的理解过于概念话,还没有真正操作过.本文打算分析一个MVP的简单实例,帮助自己更好的理 ...

  2. 【Luogu2444】病毒(AC自动机)

    [Luogu2444]病毒(AC自动机) 题面 洛谷 题解 如果存在一个无限长的串 证明可以在\(AC\)自动机上找到一个环 然后在上面可以无限跳 所以构建\(AC\)自动机 在上面跑\(dfs\)就 ...

  3. 【BZOJ2243】【SDOI2011】染色(树链剖分,线段树)

    题面 我们也要换个花样,这回提供洛谷的题面 题解 线段树+树链剖分大水题 维护颜色段的方法很简单呀... 维护当前区间内的颜色段个数, 以及当前区间左端和右端的颜色, 合并的时候考虑是否要减一下就行了 ...

  4. 【洛谷1032 】【CJOJ1711】【NOIP2002】字串变换

    ###题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B1.A2 可以变换 ...

  5. [BZOJ1000] A+B Problem

    Description Calculate a+b Input Two integer a,b (0<=a,b<=10) Output Output a+b Sample Input 1 ...

  6. haproxy实现会话保持(1):cookie

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  7. wpf研究之道-ProgressBar(进度条)控件

    ProgressBar控件,非常有用.它在什么情况下有用呢?如何使用?带着这两个问题,我们探讨下. 如果程序需要很长时间来运行,用户在不知道的情况下,以为程序已经"卡死"了,没有响 ...

  8. IE浏览器右键菜单插件开发(上篇)——自定义一个IE右键菜单项

    要做一个IE右键浏览器插件,得3步走. 第一,在IE右键菜单上添加自定义菜单名称,是通过注册表实现的,如下: string regkey = @"Software\Microsoft\Int ...

  9. Micropython TurnipBit 青少年入门编程 交通灯实验

    不知道大家小时候对红绿灯的原理有什么研究过,我是农村的孩子直到初中才见到真实的红绿灯,当时我记得很清楚,在那个路口站了五六分钟就盯着红绿灯变换,搞不清原理,只觉得神奇.现在想来实在可笑,今天写这个的很 ...

  10. Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1)

    1.  爬虫设计的技术 1)数据获取,通过http获取网站的数据,如urllib,urllib2,requests等模块: 2)数据提取,将web站点所获取的数据进行处理,获取所需要的数据,常使用的技 ...