來場環島旅行吧!

大家好,我是Yvonne,開始之前,先聽首歌吧!(學小生XD)

有些事現在不做以後就不會做了。

去年畢業前夕還有一點青春的熱血,踏上了一週機車環島旅行之旅

除了屁股痛到爆,其餘一切都很美好

嘉南平原很美、太平洋很美、中央山脈很美,台灣真的超美!

旅行是展開心胸用最貼近這片土地的方式聽見人情看見風-劉克襄

其實七天機車環島真的不夠!

這次在app中挑了七張照片來代表

使用三種功能來連動照片

datepicker →選取datepicker裡的日期來連動,照片及日期也會一起變動。

slider →用slider控制,照片及日期也會一起變動。

switch →控制自動播放,照片及日期也會一起變動。

程式碼

import UIKitclass ViewController: UIViewController {@IBOutlet weak var datePicker: UIDatePicker!@IBOutlet weak var imageView: UIImageView!@IBOutlet weak var dateSlider: UISlider!@IBOutlet weak var dateSwitch: UISwitch!let imageArray = ["23","24","25","26","27","28","29"] 
//代表日期
var dateString:String = “”
//時間字串
var timer:Timer?
//計時器
var dateCount = 0var slidervalue = 0let dateFormatter = DateFormatter()
//時間生成date
override func viewDidLoad() {super.viewDidLoad()time()                                                
//自動播放的時間
datePicker.locale = Locale(identifier: “zh_Tw”)
//中文化,原始DatePicker的格式是英文的
dateFormatter.dateFormat = “yyyy/MM/dd”
//可參考文章時間格式,注意大小寫!
// Do any additional setup after loading the view.}

//變換圖片

func compare(){ if dateCount >= imageArray.count{dateCount = 0 
//用意為循環
chooseImage(num2:dateCount)imageView.image = UIImage(named: imageArray[dateCount])}else{chooseImage(num2:dateCount)imageView.image = UIImage(named: imageArray[dateCount])}dateSlider.value = Float(dateCount)dateCount += 1
//slider一起動
}func time(){timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true){(timer)in self.compare()}}
//withTimeInterval:秒數,repeats:是否重複

詳細的timer用法⬇️⬇️⬇️

func chooseImage(num2:Int){switch num2{case 0:dateString = “2019/03/23”case 1:dateString = “2019/03/24”case 2:dateString = “2019/03/25”case 3:dateString = “2019/03/26”case 4:dateString = “2019/03/27”case 5:dateString = “2019/03/28”case 6:dateString = “2019/03/29”default:dateString = “2019/04/01”}let date = dateFormatter.date(from: dateString)datePicker.date = date!}
//設定每張圖的日期及設定DatePicker到我指定的時間

設定datePicker

@IBAction func changeImagedatePicker(_ sender: UIDatePicker) {let ImageDate = datePicker.datelet dateComponents = Calendar.current.dateComponents(in: TimeZone.current, from: ImageDate)let day = dateComponents.day!
//取出日數值,主要是在這行更改點選datePicker照片也會一同更換,看了很多文章發現大家都是以年或月為單位,花了兩三個小時才找到方法QQ
let picName = \(day)
//將讀出的日轉成字串,讓ImageView顯示對應的年份照片(前提是照片用日期命名)
imageView.image = UIImage(named: picName)//也可以寫成一行imageView.image = UIImage(named: “\(day)”)}

slider

@IBAction func yearSlider(_ sender: UISlider) {sender.value.round()slidervalue = Int(sender.value)imageView.image = UIImage(named:imageArray[slidervalue] )chooseImage(num2: slidervalue)}

Switch

@IBAction func autoPlaySwitch(_ sender: UISwitch) {if sender .isOn{time()dateCount = slidervaluedateSlider.value = Float(dateCount)}else{timer?.invalidate()}}override func viewDidDisappear(_ animated: Bool) {timer?.invalidate()
//timer要記得取消!不然會一直在背景執行。
}}

參考文章:

github:

--

--