[Swift4.2实际操作]九、完整实例-(6)创建App欢迎界面

  1 import UIKit
  2
  3 class WelcomeViewController: BaseViewController {
  4
  5     override func viewDidLoad() {
  6         super.viewDidLoad()
  7
  8         // Do any additional setup after loading the view.
  9         //隐藏导航控制器的导航条
 10         self.navigationController?.setNavigationBarHidden(true, animated: false)
 11         //并且隐藏后退按钮和关闭按钮。
 12         self.dismissBt.isHidden = true
 13         //和隐藏关闭按钮。
 14         self.backBt.isHidden = true
 15         //获得屏幕的高度
 16         let viewH = self.view.frame.size.height
 17         //获得屏幕的宽度
 18         let viewW = self.view.frame.size.width
 19         //初始化一个标签对象,
 20         //标签对象的Y轴坐标,和屏幕的高度保持固定的比例
 21         let bigTitle = UILabel(frame: CGRect(x: 0, y: viewH * 0.27, width: viewW, height: 20))
 22         //设置文字内容
 23         bigTitle.text = "欢迎来山青咏芝"
 24         //设置字体属性
 25         bigTitle.font = self.font24
 26         //设置标签的对齐方式为居中,
 27         bigTitle.textAlignment = .center
 28         //文字颜色为白色,
 29         bigTitle.textColor = .white
 30         //并将标签对象添加到根视图
 31         self.view.addSubview(bigTitle)
 32         //初始化一个段落样式
 33         let paragraphStyle = NSMutableParagraphStyle()
 34         //设置段落的行间距
 35         paragraphStyle.lineSpacing = 6
 36         //设置文字的对齐方式
 37         paragraphStyle.alignment = .center
 38         //初始化一个文字属性数组,
 39         //用来设置标签文字的字体、颜色和段落属性
 40         let attributes = [NSFontAttributeName: self.font14, NSForegroundColorAttributeName: UIColor.white, NSParagraphStyleAttributeName: paragraphStyle]
 41         //初始化一个标签对象,用来显示欢迎内容
 42         let content = "书山有路勤为径,学海无涯苦作舟!"
 43         let message = UILabel(frame: CGRect(x: 0, y: viewH * 0.36, width: viewW, height: 90))
 44         //设置标签对象的属性文字
 45         message.attributedText = NSAttributedString(string: content, attributes: attributes)
 46         //设置标签对象的行数属性
 47         message.numberOfLines = 3
 48         //然后将标签对象添加到根视图
 49         self.view.addSubview(message)
 50
 51         //接着添加几个按钮,昨晚功能的入口
 52         //首先计算按钮X轴的坐标
 53         var posXBt = 29
 54         if(self.view.frame.size.width == 375)
 55         {
 56             posXBt = 56
 57         }
 58         //根据不同的宽度,设置不同的X轴坐标,使其具有最佳的显示效果
 59         else if(self.view.frame.size.width == 414)
 60         {
 61             posXBt = 74
 62         }
 63         //初始化一个指定显示区域的按钮对象,
 64         let btYouKe = UIButton(frame: CGRect(x: posXBt, y: Int(0.62*viewH), width: Int(viewW)-2*posXBt, height: 37))
 65         //并设置按钮的圆角属性
 66         btYouKe.layer.cornerRadius = 4
 67         //当用户点击该按钮时,允许未注册的用户浏览应用程序的部分功能
 68         btYouKe.layer.masksToBounds = true
 69         //设置按钮的边框宽度为1
 70         btYouKe.layer.borderWidth = 1
 71         //宽度颜色为白色
 72         btYouKe.layer.borderColor = UIColor.white.cgColor
 73         //设置按钮的文字大小
 74         btYouKe.titleLabel?.font = self.font14
 75         //设置按钮的文字颜色
 76         btYouKe.setTitleColor(.white, for: .normal)
 77         //设置按钮正常状态下的标题内容
 78         btYouKe.setTitle("游客访问", for: .normal)
 79         //给按钮绑定点击事件
 80         btYouKe.addTarget(self, action: #selector(WelcomeViewController.gotoVisitor(_:)), for: .touchUpInside)
 81         //并将按钮添加到根视图
 82         self.view.addSubview(btYouKe)
 83
 84         //初始化第二个按钮对象,当用户点击该按钮时,跳转到登录页面
 85         let btLogin = UIButton(frame: CGRect(x: posXBt, y: Int(0.70*viewH), width: Int(viewW)-2*posXBt, height: 37))
 86         //设置按钮的圆角半径
 87         btLogin.layer.cornerRadius = 4
 88          //设置按钮的裁剪边界
 89         btLogin.layer.masksToBounds = true
 90          //设置按钮的边框宽度
 91         btLogin.layer.borderWidth = 1
 92          //设置按钮的边框颜色
 93         btLogin.layer.borderColor = UIColor.white.cgColor
 94         //设置按钮的文字大小
 95         btLogin.titleLabel?.font = self.font14
 96         //设置按钮的文字颜色
 97         btLogin.setTitleColor(.white, for: .normal)
 98         //设置按钮的标题
 99         btLogin.setTitle("账号登陆", for: .normal)
100         //并给按钮绑定点击事件
101         btLogin.addTarget(self, action: #selector(WelcomeViewController.gotoLogin(_:)), for: .touchUpInside)
102         //然后将按钮添加到根视图
103         self.view.addSubview(btLogin)
104
105         //接着创建一个圆角并且拥有投影的视图对象
106         //首先计算它的Y轴坐标
107         var posY = Int(0.78*viewH)
108         if(self.view.frame.size.width == 414)
109         {
110             posY = Int(0.78*viewH)
111         }
112         //初始化一个指定显示区域的自定义视图对象
113         let bt2View = ShadowView(frame: CGRect(x: posXBt, y: posY, width: Int(viewW)-2*posXBt, height: 37))
114         //设置视图的圆角半径
115         bt2View.cornerRadius = 4.0
116         //设置视图的阴影半径
117         bt2View.shadowRadius = 2.0
118         //设置视图的投影偏移
119         bt2View.shadowOffset = CGSize(width: 0, height: 1)
120         //设置视图的阴影的颜色
121         bt2View.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 126.0/255)
122         //设置视图的背景颜色
123         bt2View.backgroundColor = .white
124         //并将视图添加到根视图
125         self.view.addSubview(bt2View)
126
127         //初始化一个按钮对象,当点击该按钮时,将进入用户注册流程。
128         //该按钮将被添加到自定义视图
129         let btReg = UIButton(frame: CGRect(x: 0, y: 0, width: Int(viewW)-2*posXBt, height: 37))
130         //设置按钮的字体
131         btReg.titleLabel?.font = self.font14
132         //设置按钮的标题颜色
133         btReg.setTitleColor(self.fontColorRed, for: .normal)
134         //设置按钮的正常床状态下的标题
135         btReg.setTitle("账号注册", for: .normal)
136         //给按钮对象绑定点击事件,并将按钮对象添加到自定义视图
137         btReg.addTarget(self, action: #selector(WelcomeViewController.gotoRegister(_:)), for: .touchUpInside)
138         bt2View.addSubview(btReg)
139     }
140
141     //添加一个方法,用来响应登录按钮的点击事件,
142     //由于还没有创建登录页面,所以将该方法暂时置空
143     func gotoLogin(_ sender:UIButton)
144     {
145        //self.performSegue(withIdentifier: "LoginController", sender: nil)
146     }
147
148     //添加一个方法,用来响应游客登录按钮的点击事件
149     //由于还没有创建登录页面,所以将该方法暂时置空
150     func gotoVisitor(_ sender:UIButton)
151     {
152        //let vc = ControllerUtil.getTabController()
153        //UIApplication.shared.delegate?.window??.rootViewController = vc
154        // DataUtil.setVisitorLogin(value: true)
155     }
156
157     //添加一个方法,用来响应注册按钮的点击事件,
158     //接着点击项目名称,对项目进行一些设置
159     //将Status Bar Style(状态栏样式):Default改为Light
160     func gotoRegister(_ sender:UIButton)
161     {
162         //self.performSegue(withIdentifier: "RegStep1Controller", sender: nil)
163     }
164
165     override func didReceiveMemoryWarning() {
166         super.didReceiveMemoryWarning()
167         // Dispose of any resources that can be recreated.
168     }
169 }

接着点击项目名称,对项目进行一些设置:将Status Bar Style(状态栏样式):Default改为Light
接着打开Info.plist【项目属性配置文件】,在空白处鼠标右键打开菜单。
选择菜单中的【Add Row】添加行,添加一行新的选项。
点击右侧的垂直滚动条,查看下方的内容。选择【Status Bar Style】
然后在右侧的值输入框内点击,进入编辑模式。接着输入状态栏样式的值。
【Status Bar Style】:UIStatusStyleLightContent
然后打开并编辑【AppDelegate.swift】应用代理文件。
该文件包含的应用程序第一次运行时所执行的方法,
以及其他一些和应用程序运行状态相关的方法。
接着开始编写代码,创建一个导航控制器,
项目中的大部分视图控制器(页面),将由该导航控制器统一管理。

 1     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
 2
 3         UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
 4         UINavigationBar.appearance().shadowImage = UIImage()
 5
 6         if(DataUtil.hasShowIntro())
 7         {
 8             //曾经显示过intro页
 9             if(DataUtil.hasLogined())
10             {
11                 //曾经登陆过
12               //let vc = ControllerUtil.getTabController()
13               //window?.rootViewController = vc
14             }
15             else
16             {
17                 //从未登陆过
18
19               //let vc = RegStep7Controller()
20               // vc.userInfo = UserInfo()
21               //vc.userInfo.myKeMu = .SAT
22               //let navigationController = UINavigationController(rootViewController: vc)
23               // window?.rootViewController = navigationController
24
25                 let storyBoard = UIStoryboard(name: "RegLogin", bundle: nil)
26                 //首先初始化一个导航控制器,
27                 //并使欢迎页面作为导航作为导航控制器的初始页面
28                 //同时将导航控制器作为当前窗口的根视图控制器
29                 let vc = storyBoard.instantiateInitialViewController()
30                 let navigationController = UINavigationController(rootViewController: vc!)
31                 window?.rootViewController = navigationController
32             }
33         }
34         else
35         {
36             //进入intro页
37             let vc = ViewController(pages: [])
38             let navigationController = UINavigationController(rootViewController: vc)
39             window?.rootViewController = navigationController
40         }
41         window?.makeKeyAndVisible()
42         return true
43     }

原文地址:https://www.cnblogs.com/strengthen/p/9902088.html

时间: 2024-11-01 12:43:13

[Swift4.2实际操作]九、完整实例-(6)创建App欢迎界面的相关文章

[Swift4.2实际操作]九、完整实例-(5)创建BaseViewController作为控制器的基类

本文将给项目中的所有视图控制器,创建一份基类.该基类用来定义一些共用的属性和方法. 首先在用来放置视图控制器类的文件夹上点击鼠标右键,打开右键 菜单. 选择[New File]创建文件选项. 在弹出的文件模板选择窗口中,保持默认的选项, 然后点击[Next]下一步按钮,进入下一步设置页面.输入类名.父类.语言 [Class]:BaseViewController[Subclass]:UIViewController[Language]:Swift 然后点击[Next]下一步按钮,进入下一步设置页

超详细的php用户注册页面填写信息完整实例(附源码)

这篇文章主要介绍了一个超详细的php用户注册页面填写信息完整实例,内容包括邮箱自动匹配.密码强度验证以及防止表单重复等,小编特别喜欢这篇文章,推荐给大家. 注册页面是大多数网站必备的页面,所以很有必要对自己的注册页面做些精心的设计.下面三张图,第一张是注册的展示页面,第二张思维导图就一个简单的逻辑,第三张是通过firebug查看调用的JS文件. 一.给每个输入框写下说明 在用户看到这个输入框的时候,就能非常清晰的明白这个输入框是做啥用的,最大限度的降低他们产生疑惑的可能性.我们需要假设用户毫不了

python测试mysql写入性能完整实例

这篇文章主要介绍了python测试mysql写入性能完整实例,具有一定借鉴价值,需要的朋友可以参考下 本文主要研究的是python测试mysql写入性能,分享了一则完整代码,具体介绍如下. 测试环境: (1) 阿里云服务器centos 6.5 (2) 2G内存 (3) 普通硬盘 (4) mysql 5.1.73 数据库存储引擎为 InnoDB (5) python 2.7 (6) 客户端模块 mysql.connector 测试方法: (1) 普通写入 (2) 批量写入 (3) 事务加批量写入

AES与RSA混合加密完整实例

前言 前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门:https://blog.csdn.net/ityouknow/article/details/80603617),文中讲到利用RSA来加密传输AES的秘钥,用AES来加密数据,并提供如下思路: 说人话就是前.后端各自生成自己的RSA秘钥对(公钥.私钥),然后交换公钥(后端给前端的是正常的明文公钥,前端给后端的是用后端公钥加密后的密文公钥:PS:其实我觉得直接交换两个明文公钥就行了),后端生成AES的明文key,用明文key进

HTML5 本地文件操作之FileSystemAPI实例(二)

文件操作实例整理二 1.删除文件.复制文件.移动文件 //获取请求权限 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(window.TEMPORARY, 5 * 1024, initFs, errorHandler); function initFs(fs) { //删除文件 fileEntry.remove() fs.

[转]C语言构建动态数组完整实例

原文地址:http://www.jb51.net/article/52153.htm 本文以一个完整的实例代码简述了C语言构建动态数组的方法,供大家参考,完整实例如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <stdio.h> #include <malloc.h> int main(void) {     int len;     int * arr;     printf("请输入数组长度:&q

struts1.x完整实例

struts1.x完整实例 1.简介 struts是WEB程序MVC分层架构中的C,属于控制层,主要进行处理用户的请求,基于请求驱动.获取用户的请求地址并将表单中的数据封装到Form对象后交给Action进行处理.在Action中进行条用业务层处理具体的请求后将结果通过ActionMapping封装跳转地址返回给用户.struts是对servlet的再次封装,使得更加灵活高效.下面以一个登录的实例讲解struts的开发过程. 2.在新建的web工程中添加以下struts1.x  jar包 ant

HTML5 本地文件操作之FileSystemAPI实例(三)

文件夹操作demo 1.读取根目录文件夹内容 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(window.PERSISTENT, 5 * 1024, initFs, errorHandler); function initFs(fs) { //显示根目录下的内容 var dirReader = fs.root.creat

HTML5 本地文件操作之FileSystemAPI实例(四)

目录操作Demo二 1.删除目录 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(window.PERSISTENT, 5 * 1024, initFs, errorHandler); function initFs(fs) { //删除目录,子目录创建需要递归,获取可以直接指定'/' //如果子目录不存在,抛出删除异常