沒錯!到現在我們已經有了管理畫面的TabbarController了,
今天呢,就要來將鬧鐘頁面的畫面給刻出來囉!
先來看看IOS鬧鐘的畫面長得如何吧~
這邊會發現整個畫面是可以拉動的,並且每個您新增的鬧鐘內容的介面都是固定的,因此當符合
- 畫面可以拉動
- 每個鬧鐘內容的介面都是一樣的
以上兩個條件時,就可以使用TableViewController來實現這個效果!
首先先進入AlarmViewController內,用Code新建一個TableViewController:
class AlarmViewController: UIViewController {
let alarmTableView: UITableView = {
let tableView = UITableView()
return tableView
}()
override func viewDidLoad() {
super.viewDidLoad()
}
}
上面Code的意思用中文翻譯的話就是:
宣告一個型態為UITableView的變數:alarmTableView
這個TableView的屬性設定就在 {} 內設定
舉例來說:若要變更alarmTableView的背景色更改為灰色,就做以下的改動:
let alarmTableView: UITableView = {
let tableView = UITableView()
// 將alarmTableView的背景色更改為灰色
tableView.backgroundColor = .lightGray
return tableView
}()
沒有錯,更改屬性就是這麼的輕鬆。
那我們現在必須要把這個alarmTableView顯示在整個螢幕上,因此這邊就必須要做Layout(畫面佈局)了。
這裡會使用套件:SnapKit進行畫面的Layout,安裝的方法有很多種,以下提供我常用的:
SnapKit網址取得:上google搜尋「Snapkit」,點進去github,複製該網站的網址即可。
安裝完後首要步驟就是先import Snapkit:
import UIKit
import SnapKit
再來就是將剛剛建立的alarmTableView加進我們的畫面中:
這邊可以建立一個function集中管理元件(Label, button, tableView.....)
func setViews() {
self.view.addSubview(alarmTableView)
}
OK,alarmTableView已經被我們加入畫面中了,但這時候程式會不知道這個alarmTableView要顯示的位置以及大小為何,因此我們必須要為alarmTableView設Layout。
這邊也可以建立一個function集中管理畫面的Layout
func setLayouts() {
alarmTableView.snp.makeConstraints { make in
make.top.equalTo(self.view)
make.bottom.equalTo(self.view)
make.leading.equalTo(self.view)
make.trailing.equalTo(self.view)
}
}
簡單解釋一下上述程式碼大致的意思:alarmTableView的上方、左邊、右邊、底部都貼齊alarmViewController,意思就是整個畫面都會是alarmTableView。
以上程式碼還可以縮減為:
func setLayouts() {
alarmTableView.snp.makeConstraints { make in
make.top.bottom.leading.trailing.equalTo(self.view)
}
}
甚至是:
(更多的Snapkit的用法往後的文章應該會出現XD)
func setLayouts() {
alarmTableView.snp.makeConstraints { make in
make.edges.equalTo(self.view)
}
}
畫面跟Layout設定完成後,要記得加在ViewDidLoad中哦,不然他們是不會被執行到的。
override func viewDidLoad() {
super.viewDidLoad()
setViews()
setLayouts()
}
現在你的Code應該會如下:
import UIKit
import SnapKit
class AlarmViewController: UIViewController {
let alarmTableView: UITableView = {
let tableView = UITableView()
// 將alarmTableView的背景色更改為灰色
tableView.backgroundColor = .lightGray
return tableView
}()
override func viewDidLoad() {
super.viewDidLoad()
setViews()
setLayouts()
}
func setViews() {
self.view.addSubview(alarmTableView)
}
func setLayouts() {
alarmTableView.snp.makeConstraints { make in
make.edges.equalTo(self.view)
}
}
}
現在讓我們執行看看程式吧!應該整個畫面都會是alarmTableView哦
OK!明天應該會來聊聊,TableView的Cell的內容要如何去設定。