1. 程式人生 > >[Swift4.2實際操作]九、完整例項-(6)建立App歡迎介面

[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     }