swift3.0 创建一个app引导页面
swift毕竟不像是oc ,第三方的框架很多,更何况是3.0,自己动手写了个引导页面,看得上我代码的麻友可以拿去用
引导页面有三个部分构成,scrollview用语切换引导视图,pageControll用语指示引导页的页码,点击进入按钮引导用户进入app;
class LRFirstIntroduceController: UIViewController, UIScrollViewDelegate {
let numPages = 3
var pageControl = UIPageControl()
var beginBtn = UIButton()
let pageControlWidth = 60
override func viewDidLoad() {
super.viewDidLoad()
let frame = self.view.bounds
let scrollView = UIScrollView.init()
scrollView.frame = frame
scrollView.delegate = self
//为了能让内容横向移动 设置横向宽度为3个页面的宽度之和
scrollView.contentSize = CGSize.init(width:KJRScreenWidth * CGFloat(numPages) , height: KJRScreenHeight)
scrollView.isPagingEnabled = true
scrollView.showsHorizontalScrollIndicator = false
scrollView.showsVerticalScrollIndicator = false
// scrollsToTop是UIScrollView的一个属性,主要用于点击设备的状态栏时,是scrollsToTop == YES的控件滚动返回至顶部。
// 每一个默认的UIScrollView的实例,他的scrollsToTop属性默认为YES,所以要实现某一UIScrollView的实例点击设备状态栏返回顶部,则需要关闭其他的UIScrollView的实例的scrollsToTop属性为NO。很好理解:若多个scrollView响应返回顶部的事件,系统就不知道到底要将那个scrollView返回顶部了,因此也就不做任何操作了。。。
scrollView.scrollsToTop = false
scrollView.bounces = false for index in 0..<numPages {
let imageView = UIImageView.init(image: UIImage.init(named: "GuideImage\(index + 1).png"))
imageView.frame = CGRect.init(x: KJRScreenWidth * CGFloat(index), y: 0, width: KJRScreenWidth, height: KJRScreenHeight)
scrollView.addSubview(imageView)
} self.view.addSubview(scrollView) let pageControlx = KJRScreenWidth - CGFloat(pageControlWidth) pageControl = UIPageControl.init(frame: .init(x: pageControlx/2, y: KJRScreenHeight - 50.0, width:CGFloat(pageControlWidth) , height: 20)) pageControl.numberOfPages = numPages pageControl.currentPage = 0 view.addSubview(pageControl) beginBtn = UIButton.init(type: .custom)
beginBtn.backgroundColor = #colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1)
beginBtn.frame = CGRect.init(x: pageControlx/2, y: KJRScreenHeight - 80, width:CGFloat(pageControlWidth), height: 25)
beginBtn.setTitle("点击进入", for: .normal)
beginBtn.titleLabel?.adjustsFontSizeToFitWidth = true
beginBtn.layer.masksToBounds = true
beginBtn.layer.cornerRadius = 3.0
view.addSubview(beginBtn)
beginBtn.alpha = 0.0 self.view.bringSubview(toFront: pageControl)
self.view.bringSubview(toFront: beginBtn) } func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offset = scrollView.contentOffset
// 随着滑动改变pageControl的状态
pageControl.currentPage = Int(offset.x / view.bounds.width)
// 因为currentPage是从0开始,所以numOfPages减1
if pageControl.currentPage == numPages - 1 {
UIView.animate(withDuration: 0.5) {
self.beginBtn.alpha = 0.8
}
} else {
UIView.animate(withDuration: 0.5) {
self.beginBtn.alpha = 0.0
}
}
}
swift3.0 创建一个app引导页面的更多相关文章
- 如何为scratch3.0创建一个独立的页面或窗体
很多人都利用GIT上的scratch3.0做开发,但是苦于有些定制需要个性化开发但是不知道如何动手.本篇文章来做好普及工作吧. 首先需要完成事项如下: 1.需要进行modal定义 2.新增窗口的UI界 ...
- diango创建一个app
创建一个app terminal里执行命令 python manage.py startapp app名称 注册 settings配置 INSTALLED_APPS = [ 'app01', 'app ...
- 用weexplus从0到1写一个app(2)-页面跳转和文章列表及文章详情的编写
说明 结束连续几天的加班,最近的项目终于告一段落,今天抽点时间开始继续写我这篇拖了很久的<用weexplus从0到1写一个app>系列文章.写这篇文章的时候,weexplus的作者已经把w ...
- App引导页面源代码的实现
一.页面效果图
- react用脚手架创建一个react单页面项目,react起手式
官网地址:https://react.docschina.org/ 确保本地安装了Node.js node的版本大于8.10 npm的版本大于5.6 1.在本地的某个位置创建一个文件夹,执行以下 ...
- 001_创建一个sidebar切换页面
Table Of Content 准备 基本思路 实现 我们期望实现这样的效果: .listen(app.get('port'), function( ...
随机推荐
- apk安全测试思路
一: apk安全测试 对于一款android的apk程序,主要进行的测试分两部分: 1) 接口测试 ---接口测试实际上是常见的web安全测试 2) android组件测试 --组件测试实际上是and ...
- VBS 获取当前进程 ID
Function CurrProcessId Dim oShell, sCmd, oWMI, oChldPrcs, oCols, lOut lOut = Set oShell = CreateObje ...
- 使用keytool 生成证书
keytool 工具介绍 keytool 是java 用于管理密钥和证书的工具,其功能包括: 1 创建并管理密钥 2 创建并管理证书 3 作为CA 为证书授权 4 导入导出证书 keytool 采用k ...
- Linux监控实战-2
vmstat命令 用法:vmstat 1 --->每个1s打印信息; vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存 ...
- git下载自己项目到本地
git下载自己项目到本地 假如外出工作,需要在另一台电脑上面pull自己的某个git远程项目到本地 $ git init $ git pull https://github.com/TTyb/54qj ...
- CSharp 相关知识点小结
1.JS获取iframe下面的内容document.getElementById('IFRAME1').contentDocument; 2.dialog 弹出层,定位:postion:'bottom ...
- 红外遥控NEC协议使用总结
最近做了一个调试红外遥控三色灯的实习,花了一个多月的时间研究基于NEC协议的红外遥控,下面是这次实习技术方面的总结. 一.NEC协议特征: 8位地址和8位命令长度 每次传输两遍地址(用户码)和命令(按 ...
- HDU2896 病毒侵袭
题目大意:给出若干病毒的特征码,不超过500个.每个病毒的特征码长度在20~200之间.现在有若干网站的源代码,要检测网站的源代码中是否包含病毒.网站的个数不超过1000个,每个网站的源代码长度在70 ...
- 十大Intellij IDEA快捷键(转)
1 智能提示 Intellij首当其冲的当然就是Intelligence智能!基本的代码提示用Ctrl+Space,还有更智能地按类型信息提示Ctrl+Shift+Space,但因为Intellij总 ...
- Tornado实战项目(伪JD商城)
预备知识 在之前tornado商城项目中,在开始之前需要引入一些项目设计知识,如接口,抽象方法抽象类,组合,程序设计原则等,个人理解项目的合理设计可增加其灵活性, 降低数据之间的耦合性,提高稳定性,下 ...