選擇障礙的救星 — 轉轉器!!

閱讀時間約 3 分鐘

目的:

  1. Timer倒數計時。
  2. 熟練基本的 Swift 程式語法。
  3. 熟悉 iOS App 畫面的製作。
  4. 製作多頁面 App & 頁面間傳資料的能力。
  5. 使用 UIAlertController。
  6. 透過 present 顯示以下連結提到的某一種 controller。(不包含 UIAlertController)
  7. 加入通知提醒功能。
  8. 利用 CABasicAnimation 製作特別的動畫效果。

raw-image

這次整整花了快一個禮拜,接下來來整理一下吧~

  1. Timer的使用:

raw-image

這次卡住的其中一個地方,我一直在找有沒有直接倒數的function,後來參考了其他人做的作業,才發現可以這樣做。

首先timer function的使用,最後的參數block為每經過withTimeInterval的時間後,執行的動作,這裡的timer是新建立的Timer參數,可以代表本身方程式的參數,後面接invalidate可以讓方程式停止loop,直到下次使用到此function,這可以去搞懂closure的部分比較好理解。

2.製作漸層背景:

raw-image

這裡值得注意的是,我最後用insertSublayer這部分可以使漸層背景到整個最底層不會蓋住其他圖片的建立。

3.轉盤建立與文字顯示在轉盤上:

raw-image

這裡卡了一些時間,原因是因為文字顯示的邏輯我想了一下,其實就只要角度和半徑除以二就可以顯示在中間了,不知道為啥一直鬼打牆卡住。

3. 轉盤動畫:

raw-image

利用 CABasicAnimation建立動畫,後面就是參數設定了~

answer是我讓箭頭隨機跑到一個位置,然後再顯示出來轉動後的效果,簡單來講,動畫過程跟讓圖片變換方向後的結果是分開寫出來,後面就能達到效果了。

4.增加減少選項:

raw-image

一開始我想到的是用表格的方式進行,但潘帥說之後會教相關的方式,所以我就先以不同方式進行,花比較多時間的是減少的部分,除了從原本建立的array移除之外,還要從view中顯示出來的移除,此時就能加上removeFromSuperview(),就能順利移除。

之後要再加上的是,能讓每次做過的選項儲存到後端,這部分有點困難,可能需要花更多時間,以及有沒有辦法讓多台使用者同時使用同一個轉盤。

另外這次作業真的花了點時間研究蘋果英文解釋function的程式,這真的是需要練習的經驗,因為內建的API實在太多了,自己研究出來一定會熟悉很多,也能容易找到自己要使用的function!

參考:

[Swift]捉皮丘Catch Pichu遊戲 #1 Timer, Alert Controller, AVFoundation
爸爸總是笑我們這些北部長大的小孩沒看過皮丘很俗,他說在他小時候,皮丘是很普遍的神奇寶貝,他和小夥伴們常常一起在高雄老家的水稻田間捉皮丘,秋收之後鄰居哥哥還會帶著他的小火龍來幫大家生火控窯,這些都是他們美好的兒時回憶。medium.com

GITHUB:

deblive0917/good-game
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build…github.com

    1會員
    37內容數
    留言0
    查看全部
    發表第一個留言支持創作者!
    dab戴伯的沙龍 的其他內容
    目的: 熟練資料傳遞的技巧。 建立日期: 這次試著多用function的方式進行,會讓程式簡潔很多。這裡可以注意到,使用到calendar function去製造出年月日的效果,這樣就可以從datepicker中取.date值放入function進行換算成生日的星座。 2. 傳資料到下個頁面
    目的: 在 viewDidLoad 裡寫程式。 2. 利用 AVPlayer 播放音樂。 3. 包含播放鍵,暫停鍵,下一首,上一首。 4. 使用 IBOutlet 和 IBAction 實現 App 的功能。 5. 畫面上至少需包含以下元件,而且程式也有使用這些元件。 text fiel
    目的: 做出漸層的背景。 mask遮罩。 做出漸層的背景 運用CAGradientLayer()建立實現漸層功能的實例。 然後UIView建立一個確切位置的框框。 根據.colors 的array可設定由哪兩個顏色形成漸層。 gradientLayer.startPoint = CGP
    這次使用UIBezierPath的功能在SwiftUI去畫一張圖,雖然我的藝術天份蠻差的,但藉由程式之手至少是可以畫出稍微相似的圖出來哈哈~ 主要運用到兩種功能畫圖: let body = UIBezierPath(arcCenter: CGPoint(x: 213, y: 213), radi
    這比較像是IBOulet和IBAction的基礎練習,比較需要注意的是: 若要設定點選按鈕時Scroll view能移動到該衣服的位置,就需要: scrollrow.setContentOffset(CGPoint(x: pagecontrol.currentPage * Int(scrollr
    目的: 1 使用 date picker & slider 做時間的魔法師,顯示自己十年的變化成長。 2 date picker 設定最小 & 最大時間,讓時間的範圍為 2009 ~ 2019。 3 滑動 slider 時,slider 會停在整數的位置,比方滑到 2010.6 時會四捨五入到
    目的: 熟練資料傳遞的技巧。 建立日期: 這次試著多用function的方式進行,會讓程式簡潔很多。這裡可以注意到,使用到calendar function去製造出年月日的效果,這樣就可以從datepicker中取.date值放入function進行換算成生日的星座。 2. 傳資料到下個頁面
    目的: 在 viewDidLoad 裡寫程式。 2. 利用 AVPlayer 播放音樂。 3. 包含播放鍵,暫停鍵,下一首,上一首。 4. 使用 IBOutlet 和 IBAction 實現 App 的功能。 5. 畫面上至少需包含以下元件,而且程式也有使用這些元件。 text fiel
    目的: 做出漸層的背景。 mask遮罩。 做出漸層的背景 運用CAGradientLayer()建立實現漸層功能的實例。 然後UIView建立一個確切位置的框框。 根據.colors 的array可設定由哪兩個顏色形成漸層。 gradientLayer.startPoint = CGP
    這次使用UIBezierPath的功能在SwiftUI去畫一張圖,雖然我的藝術天份蠻差的,但藉由程式之手至少是可以畫出稍微相似的圖出來哈哈~ 主要運用到兩種功能畫圖: let body = UIBezierPath(arcCenter: CGPoint(x: 213, y: 213), radi
    這比較像是IBOulet和IBAction的基礎練習,比較需要注意的是: 若要設定點選按鈕時Scroll view能移動到該衣服的位置,就需要: scrollrow.setContentOffset(CGPoint(x: pagecontrol.currentPage * Int(scrollr
    目的: 1 使用 date picker & slider 做時間的魔法師,顯示自己十年的變化成長。 2 date picker 設定最小 & 最大時間,讓時間的範圍為 2009 ~ 2019。 3 滑動 slider 時,slider 會停在整數的位置,比方滑到 2010.6 時會四捨五入到
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    這次要跟大家討論的議題是什麼?是關於20檔高股息ETF這麼多,選擇障礙。新手想入手高股息ETF,最友善的選擇方向是什麼?以資本利得為主是高股息嗎?那我們這一集來跟大家討論一下。最近有很多朋友在提到說,這高股息ETF現在出了一大堆,後面今年還要出更多。這到底應該怎麼去選?怎麼去看?我
    Thumbnail
    當選擇成為一種奢侈,晚餐的決定就像是一場每日的心理戲碼。在這個美食無處不在的世界裡,每一餐都是一次機會,一次冒險,一次對味蕾的承諾。
    Thumbnail
    最近這幾天,我一直在研究如何自我療癒身心的狀況。看了幾本書,也聽了幾個心理師的演說,還有心理諮商師的書,以及身心靈方面的書。當然,裡頭也有些特別怪力亂神,或是涉及前世的,這我就比較不走這塊。 今天我發現這些療癒方法,其實可以歸納出一套有系統的自我療癒技術。
    Thumbnail
    MOUSEBUTTONDOWN的個性和mouse.get_pressed()是完全相反的。mouse.get_pressed()只活在當下,完全不管過去發生過什麼事;MOUSEBUTTONDOWN則會記得所有還沒處理完的事,只要事件佇列還沒被塞滿的話。
    Thumbnail
    我們是否每天都在考慮午餐吃什麼?又或者打開Netflix卻無法決定要看哪部電影? 甚至是在生涯道路上的大學科系、職業選擇上猶豫不決? 在現今多元社會裡,我們有過多的選擇,卻不知道要如何抉擇。 沒有人想被鎖在一扇門裡面。也沒有人想永遠在走廊中流浪。 那麼本書的作者 - 皮特‧戴維斯,在
    Thumbnail
    在一個選擇很多很多的世界裡,我們似乎沒有因為可以擁有那麼多的選擇而安心,反而是因為擁有很多錯過的機會而焦慮。 如果我們能為事物排出優先順序,把心力投入在重要的事情上,努力消除資訊不對等所帶來的幻象,並依據預定的標準來汰除選項,將可以大大精簡決策過程,克服FOMO和FOBO給人生帶來的困擾。
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    這次要跟大家討論的議題是什麼?是關於20檔高股息ETF這麼多,選擇障礙。新手想入手高股息ETF,最友善的選擇方向是什麼?以資本利得為主是高股息嗎?那我們這一集來跟大家討論一下。最近有很多朋友在提到說,這高股息ETF現在出了一大堆,後面今年還要出更多。這到底應該怎麼去選?怎麼去看?我
    Thumbnail
    當選擇成為一種奢侈,晚餐的決定就像是一場每日的心理戲碼。在這個美食無處不在的世界裡,每一餐都是一次機會,一次冒險,一次對味蕾的承諾。
    Thumbnail
    最近這幾天,我一直在研究如何自我療癒身心的狀況。看了幾本書,也聽了幾個心理師的演說,還有心理諮商師的書,以及身心靈方面的書。當然,裡頭也有些特別怪力亂神,或是涉及前世的,這我就比較不走這塊。 今天我發現這些療癒方法,其實可以歸納出一套有系統的自我療癒技術。
    Thumbnail
    MOUSEBUTTONDOWN的個性和mouse.get_pressed()是完全相反的。mouse.get_pressed()只活在當下,完全不管過去發生過什麼事;MOUSEBUTTONDOWN則會記得所有還沒處理完的事,只要事件佇列還沒被塞滿的話。
    Thumbnail
    我們是否每天都在考慮午餐吃什麼?又或者打開Netflix卻無法決定要看哪部電影? 甚至是在生涯道路上的大學科系、職業選擇上猶豫不決? 在現今多元社會裡,我們有過多的選擇,卻不知道要如何抉擇。 沒有人想被鎖在一扇門裡面。也沒有人想永遠在走廊中流浪。 那麼本書的作者 - 皮特‧戴維斯,在
    Thumbnail
    在一個選擇很多很多的世界裡,我們似乎沒有因為可以擁有那麼多的選擇而安心,反而是因為擁有很多錯過的機會而焦慮。 如果我們能為事物排出優先順序,把心力投入在重要的事情上,努力消除資訊不對等所帶來的幻象,並依據預定的標準來汰除選項,將可以大大精簡決策過程,克服FOMO和FOBO給人生帶來的困擾。