作業5-2:⭐️ 10YearChallenge,時間都去哪了

Baaro
彼得潘的 Swift iOS / Flutter App 開發教室
5 min readJul 23, 2020
Photo by Henry & Co. on Unsplash

介紹

我們使用到的元件如上圖。

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 = 0
self.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 格式

--

--