#32 寺廟尋奇OuO (10YearChallenge,時間都去哪了)

台灣宗教盛行,廟宇隨處可見,你可以說出App裡幾間廟的名字?

資料來源 https://haplaytour.pixnet.net/blog/post/257273206,https://shinylu0920.pixnet.net/blog/post/329576086

這個畫面使用到的元件有:

  1. UILable:顯示年月日、Autoplay。
  2. Date picker:選擇月曆。
  3. Slider:滑動選擇月曆。
  4. Switch:切換自動播放功能。
  5. UIImage View:播放照片。

問題紀錄:輪播Timer()還不會,目前是參照學長姐的作業

過程中卡在如何取得datePicker的日期,對於dateComponents也是第一次使用

let dateComponents = Calendar.current.dateComponents(in: TimeZone.current, from: datePicker.date)

研究學長姐的作品,才知道Switch()如何使用,case跟array一樣也是從0開始

private func choosePhoto(num:Int) {switch num {case 0:dateString = "2021/01/01"case 1:dateString = "2021/02/01"case 2:dateString = "2021/03/01"case 3:dateString = "2021/04/01"case 4:dateString = "2021/05/01"case 5:dateString = "2021/06/01"case 6:dateString = "2021/07/01"case 7:dateString = "2021/08/01"case 8:dateString = "2021/09/01"case 9:dateString = "2021/10/01"case 10:dateString = "2021/11/01"default:dateString = "2021/12/01"}//使datePicker顯示之日期為dateString內的字串let date = dateFormatter.date(from: dateString)datePicker.date = date!let dateComponents = Calendar.current.dateComponents(in: TimeZone.current, from: datePicker.date)var month = dateComponents.month!month -= 1dateLabel.text = "2021-\(month + 1)-1"}

在如何讓圖片回到一開始重頭播也卡關,看了前輩們的資料才能理解怎麼做
photoArray.count是Array的總數

private func compare() {print("imageNumber = ", "\(imageNumber)")print("photoArray.count = ", "\(photosArray.count)")//如果到最後一張照片時則從第一張開始,不是的話繼續跑照片num+=1if imageNumber >= photosArray.count{imageNumber = 0choosePhoto(num: imageNumber)photoImageView.image = UIImage(named: photosArray[imageNumber])}else{choosePhoto(num: imageNumber)photoImageView.image = UIImage(named: photosArray[imageNumber])}//連動sliderdateSlider.value = Float(imageNumber)imageNumber += 1}

最後是Timer,目前還不理解如何運用,嘗試研究裡面屬性代表什麼意思花了點時間,尤其是Block裡{(timer) in self.compare()},目前還看不懂,不過文組班還不會教,目前是照著學長姐的做法,日後學會再回來看應該會更明白

private func time() {timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: {(timer) in self.compare()})}

・完整程式碼

・GitHub

參考資料

--

--