swift 编写欢迎界面-- ios开发
转载自: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开发的更多相关文章
- 【swift,oc】ios开发中巧用自动布局设置自定义cell的高度
ios开发中,遇到自定义高度不定的cell的时候,我们通常的做法是抽取一个frame类,在frame类中预算好高度,再返回. 但是苹果出来自动布局之后...春天来了!!来看看怎么巧用自动布局设置自定义 ...
- Swift - 使用HTML5进行iOS开发(将HTML5打包成iOS应用)
最近越来越流行使用HTML5进行跨平台应用开发,先不说运行效率如何.从人力成本来说,只要写一套html页面就可以打包发布到安卓和iOS等多个平台,确实会省下不少时间和人力(这个领导最喜欢了). 下面简 ...
- 【Swift 2.2】iOS开发笔记(三)
1.UITableView 中调用 UIButton 的 setTitle 会闪 滚动列表时比较明显,解决办法: buttonType 改成 custom 即可,但是这样一来 UIButton 的高亮 ...
- 【Swift 3.1】iOS开发笔记(四)
一.唱片旋转效果(360°无限顺时针旋转) func animationRotateCover() { coverImageView.layer.removeAllAnimations() let a ...
- 从Swift学习iOS开发的路线指引
本文主要是楼主近段时间从Swift语法开始自学iOS开发的流程总结,PS 一个前提,楼主的生存环境中买不到一本iOS开发中文教程,所以基本都是百度摸索出来的 >_< 主要流程 学习Swif ...
- 我推荐的一些iOS开发书单
文/叶孤城___(简书作者)原文链接:http://www.jianshu.com/p/2fa080673842著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 上次发了一下比较不错的i ...
- 新手必看,史上最全的iOS开发教程集锦,没有之一!
最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...
- Android与Swift iOS开发:语言与框架对比
Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有Sw ...
- iOS - Swift iOS 开发体系
1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation ...
随机推荐
- C#图解教程 第十一章 枚举
枚举 枚举 设置底层类型和显式值隐式成员编号 位标志 Flags特性使用位标志的示例 关于枚举的补充 枚举 枚举 枚举是由程序员定义的类型与类或结构一样. 与结构一样,枚举是值类型,因此直接存储它们的 ...
- CSS3 2D、3D转换
2D转换方法:transform().rotate().scale().skew().matrix() 3D转换方法:rotateX().rotateY() 1.示例代码 <!DOCTYPE h ...
- 【SPOJ】Distinct Substrings/New Distinct Substrings(后缀数组)
[SPOJ]Distinct Substrings/New Distinct Substrings(后缀数组) 题面 Vjudge1 Vjudge2 题解 要求的是串的不同的子串个数 两道一模一样的题 ...
- [BZOJ1001] [Beijing2006] 狼抓兔子 (最短路)
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个 ...
- 对html进行截图并保存为本地图片
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 斐波拉契数列(Fibonacci)--用生成器生成数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...
- JavaScript的基本使用
一.JavaScript的简单介绍 JavaScript是一种属于网络的脚本语言(简称JS),已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常Ja ...
- python感悟
嗯,对于python我其实也是一知半解,比较擅长java,我就拿java和python进行比较一下吧 1,首先先说简单的程序运行时间问题,对于同等时间复杂度的测试程序,python虽然运行速度没有c快 ...
- 【python学习笔记】6.抽象
[python学习笔记]6.抽象 创建函数: 使用def语句定义函数,不用声明参数类型,和返回值类型 def function_name(param1, param2): 'this is docum ...
- 【python学习笔记】4.字典:当索引不好用时
[python学习笔记]4.字典:当索引不好用时 字典是python中唯一内建的map类型 创建: key可以为任何不可改变的类型,包括内置类型,或者元组,字符串 通过大括号: phonebook={ ...