作業5-2:⭐️ 10YearChallenge,時間都去哪了
介紹
我們使用到的元件如上圖。
Outlet
Image View : 更換image
Stepper : 控制value
Datepicker : 控制 Date
Slider : 控制value
Slider Label : 顯示 Slider 的Value
Datepicker Label : 顯示 Datepicker 的Date
Action
Switch : 控制timer 開關,輪播image圖片。
Stepper : 加減Slider的值
Datepicker : 依年份來換image
Slider : 依數值來換 image
changeImage
changeImage 更換 image圖片的functiuon
我這邊圖片檔名為 Album0 ~ Album40
changeSliderShowVal & changeDatepickerShowVal
更換兩個label 的顯示數值,
datepicker 方便顯示以 20XX-01-01 來做。
String(format: “%02d”, yearNum)
轉為字串並格式化數字為兩位數,個位數補0( 08,09,10)。
changeDatepicker
更改Datepicker 的日期
changeSlider
更改slider的數值
changeStepper
更改stepper的數值
Action
Slider Action 的動作:
取slider目前的值,
換圖片,改sliderLabel、Datepicker 、DatepickerLabel、stepper 的值。
Datepicker 取得日期,
設定日期格式化的格式(參考 DateFormatter 格式),
let year = Int(dateFormatter.string(from: nowSelDate)) ?? 0
dateFormatter.string(from: nowSelDate)
直接取的話,會變成(01、02、03...39、40)年,
轉Int 則會轉為數字(1、2、3...39、40)
取我們要的數字,在吧數字丟去func 處理。
stepper 取數值 給各function。
Switch
我們要控制timer 隨著時間來更換 image。
//設定全域變數
var timer:Timer?
var timeCount:Int = 0self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timeFunc), userInfo: nil, repeats: true)
Timer 每秒執行一次timeFunc的function。
說明:
timeInterval : 觸發間隔時間(秒)
target : Timer觸發的對象,這邊填入self
表示這一個ViewController
selector => Timer的觸發事件,需填入一個function,這邊填入timeFunc()
userInfo => 可作為傳入Timer觸發事件的資料,這邊沒有則填入nil
repeats => 是否重複執行(true or false)【 False 則執行一次而已】
Function之前的 @objc 現在不知道啥意思,所以就不誤導大家了。
timeFunc()主要設定當image換到最後時啟用輪播功能,
if 判斷是否到最後的image,跟數值++。
if判斷可能會有問題,也不會是最好的方法,就交給專業的優化了。
以上
參考資料
DateFormatter 格式