Apple Store 的 AirPods Pro 刻字

這個案例很早就已經弄好了,但苦於畫面還需要製作,功能面其實很簡單就可以完成,那麼就開始來分享如何做出這個功能!

做畫面

首先要先了解畫面上有哪些UI元件,不過我只有針對要程式化的部分進行製作,看到的畫面多半是利用螢幕截圖方式在放進來當背景,因為案例分享主要在如何實作輸入時候就顯示於airpods外盒上,所以這部分就不多說了!

所以我在main.storyboard拉了一個UIButton是為了點選後可以開啟第二個畫面,如官方操作流程來做,當然官方還有搭配Navigation來做,這部分我也沒有做。

接著我們需要多拉一個ViewController,然後將airpods的圖片放上去,並拉取一個Segment的元件來做表情符號、文字,因為表情符號還需要特定鍵盤,這部分就先跳過!

第二個畫面我們要多考慮UITextField,且切換至表情符號時候必須要將文字欄位隱藏起來,在這個章節我們都會說到!同時還要拉一個Label來放在airpods的外殼,以作為顯示效果。

畫面切換

第一個畫面的按鈕要跳到第二頁,就是按鈕按著右鍵拖曳過去,選擇showDetail即可完成!

滑鼠右鍵拖曳按鈕(UIButton)至下一個畫面就會出現選單可做選擇

寫程式

在開始之前,我有做一件事,就是新建一個ViewControllerClass,因為是第二個頁面,所以必須要指定custom class,名稱為:engravingViewController

新增完畢後,按照同樣的步驟,將第二個頁面指定我們所新增的ViewControllerClass-engravingViewController

完成以上步驟後,我們需要將label部分與ViewController建立連結(IBOutlet),然後輸入框要做兩個連結,一個是IBOutlet一個是IBAction,因為透過官網APP來看,我們要懂得收鍵盤、還要邊輸入邊顯示於Airpods外殼上,所以我們需要在engravingViewController這裡面寫程式!

當使用者於文字方輸入值時,要觸發事件

所以在建立文字輸入框的IBAction時,我們需要在Type下方事件欄選擇Editing Changed

在這個IBAction中我們輸入以下程式碼,也就是將label的值改成我文字框所輸入的值

displayWishLabel.text = sender.text

這樣一來就完成了!可以馬上測試結果,就會發現你所輸入的文字邊輸入時就會出現在上方。

Segment的事件

當切換Segment時,我們必須要隱藏文字欄位,所以需要寫一些方法在Segment的IBAction func中:

//若選擇的項目為表情符號

if sender.selectedSegmentIndex == 0 {

//文字輸入框欄位隱藏

giftTextfield.isHidden = true

//收鍵盤

view.endEditing(false)

//若選擇的項目為文字

}else if sender.selectedSegmentIndex == 1 {

//顯示文字輸入框

giftTextfield.isHidden = false

}

以上大致上就是完成囉!

成果分享

Github

--

--