更換內容 ( 頁面 / 圖片…)
page control, segmented control, button, gesture
Published in
5 min readApr 23, 2021
成品 (除了 Button 似乎看不出是按何元件才更換圖與文字😅)
基本配置
▲構思主題後用 Storyboard 配置並將圖放於 Assets
▲將更動內容不輸入文字與圖片,除 Button 及 Segmented control 外
在 ViewController.swift 選 Assistant Editor寫程式
定義陣列 (Array) : 會改變之圖與文字
let movieImages = [“conan.jpg”, “gojira.jpg”, “love.jpg”]
let nameLabels = [“名偵探柯南:緋色的彈丸”, “哥吉拉大戰金剛”, “當男人戀愛時”]
let pageLabels = [“1/3”, “2/3”, “3/3”]
陣列索引(順序)
var arrayIndex: Int = 0
定義同步改變之圖與文字 (簡化之後程式)
func sync() {
image.image = UIImage(named: movieImages[arrayIndex])
pageDot.currentPage = arrayIndex
nameOfMovie.text = nameLabels[arrayIndex]
numberOfPage.text = pageLabels[arrayIndex]
segment.selectedSegmentIndex = arrayIndex
}
使模擬器顯示文字變化 (須將剛定義好的 func 放入 viewDidLoad 中)
override func viewDidLoad() {
super.viewDidLoad()
sync()
}
連結各元件 IBOutlet(變數,讀取修改存取storyboard元件)和 IBAction(執行)
▲點選元件按右鍵拉至 Assistant 設定名稱
▲Button 無需拉 IBOutlet 因無變數
▲swipeShowNext (Prev) Pic 為 gesture 元件
➞先拉 ImageView 至 Swipe Gesture Regornizer
➞再由 Swipe Gesture Regornizer 拉至 Assitant 建立 Action
@IBOutlet weak var image: UIImageView!
@IBOutlet weak var pageDot: UIPageControl!
@IBOutlet weak var nameOfMovie: UILabel!
@IBOutlet weak var numberOfPage: UILabel!
@IBOutlet weak var segment: UISegmentedControl!@IBAction func pageControlChange(_ sender: Any) {
}
@IBAction func leftButtonChange(_ sender: Any) {
}
@IBAction func rightButtonChange(_ sender: Any) {
}
@IBAction func segmentedControlChange(_ sender: Any) {
}
@IBAction func swipeShowNextPic(_ sender: Any) {
}
@IBAction func swipeShowPrevPic(_ sender: Any) {
}
設置切換條件
▲此處 == 為等於
▲舉左按鈕為例
▲如現於圖 0 位置(首圖), 按左應換為圖 2 (尾圖), 因此 0 要 +2, 以此類推
▲page control, segmented control 不更動, 因此如 0 則 0, 如 1 則 1
@IBAction func leftButtonChange(_ sender: Any) {
if arrayIndex == 0 {
arrayIndex = arrayIndex + 2
sync()
}
else if arrayIndex == 1 {
arrayIndex = arrayIndex — 1
sync()
}
else {
arrayIndex = arrayIndex — 1
sync()
}
}
完整程式碼
GitHub