zoukankan      html  css  js  c++  java
  • [Swift实际操作]九、完整实例-(6)创建App欢迎界面

    本文创建一个位于导航控制器之内的欢迎页面,该页面主要用来向用户简要介绍产品的功能。以及提供主要功能的入口。

    首先选择自定义视图文件夹【CustomViews】,需要在该文件夹下,导入一款第三方类库。该类库仅包含一个类文件。

    用来给视图同时添加圆角和投影效果。点击左下角的+号图标,打开选项菜单。

    选择【Add Files to "DemoApp"】添加文件至项目选项。

    双击类库文件【ShadowView.swift】,将文件导入到自定义视图文件夹下。

    接着打开并编辑视图控制器类文件【WelcomeViewController.swift】

      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,  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,  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),  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),  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,  Int(viewW)-2*posXBt, height: 37))
    114         //设置视图的圆角半径
    115         bt2View.cornerRadius = 4.0
    116         //设置视图的阴影半径
    117         bt2View.shadowRadius = 2.0
    118         //设置视图的投影偏移
    119         bt2View.shadowOffset = CGSize( 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,  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     }
  • 相关阅读:
    演讲的灵魂:主线
    四种演讲风格应该被摒弃
    思想是演讲的基础
    DML&DDL&DCL
    kafka在windows下安装单机版
    《可复制的领导力》-领导力技术
    《可复制的领导力》-管理者角色
    《可复制的领导力》-沟通视窗
    《可复制的领导力》-领导和管理的区别
    vs code设置终端主题颜色
  • 原文地址:https://www.cnblogs.com/strengthen/p/9902088.html
Copyright © 2011-2022 走看看