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# 图解教程 第五章 方法
方法的结构方法体内部代码的执行本地变量 类型推断和var关键字 嵌套块中的本地变量本地常量控制流方法调用返回值返回语句和void方法参数 形参 实参值参数引用参数引用类型作为值 ...
- 让安卓app支持swf的一个播放器,和自己编写的音乐管理程序
jcenter方式导入 在需要用到这个库的module中的build.gradle中的dependencies中加入 dependencies { compile 'com.yhd.hdswfplay ...
- 【BZOJ1901】【Luogu2617】Dynamic Ranking(主席树,树状数组)
[BZOJ1901][Luogu2617]Dynamic Ranking(主席树,树状数组) 题面 神TM BZOJ权限题 Luogu真良心 题解 如果不考虑修改 很容易的主席树区间第K大 考虑修改 ...
- [BZOJ1430] 小猴打架 (prufer编码)
Description 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打架之后,整个森 ...
- MySQL系列-第一章节:MySQL介绍与安装
1.数据库介绍 1.1.什么是数据库`<Database>` 简单说存放数据的仓库,这个仓库按照一定的数据结构<数据结构是指数据的组织形式或数据之间的联系>来组织.存储的,我们 ...
- OpenAI dota2大战人类顶尖选手视频
AI大战Dendi:http://www.bilibili.com/video/av13267474/?zw#quality=3 AI大战Sumail:http://www.bilibili.com/ ...
- up61博客模版版本v1.0.0
经过两天的努力 终于把博客模板框架写出来了. 表示写模板累死了,很久没有写样式了,还是那么难搞.没有PHP写函数爽. 不管怎么样 第一版出来了.以下是部分截图.预览 当然在示例部署到项目上的时候 ,部 ...
- 【BSGS】BZOJ3239 Discrete Logging
3239: Discrete Logging Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 729 Solved: 485[Submit][Statu ...
- sprintf函数使用
功能 把格式化的数据写入某个字符缓冲区. 所需头文件 stdio.h 原型 int sprintf( char *buffer, const char *format, [ argument] - ) ...
- ubuntu中eclipse 不支持gbk编码问题解决办法
今天在ubuntu 下, 把Windows下工程导入Linux下Eclipse中,由于工程代码,是GBK编码,而Ubuntu默认不支持GBK编码,所以,要让Ubuntu支持GBK. 方法如下: 1.修 ...