Apple Store 的 AirPods Pro 刻字
這個案例很早就已經弄好了,但苦於畫面還需要製作,功能面其實很簡單就可以完成,那麼就開始來分享如何做出這個功能!
做畫面
首先要先了解畫面上有哪些UI元件,不過我只有針對要程式化的部分進行製作,看到的畫面多半是利用螢幕截圖方式在放進來當背景,因為案例分享主要在如何實作輸入時候就顯示於airpods外盒上,所以這部分就不多說了!
所以我在main.storyboard拉了一個UIButton是為了點選後可以開啟第二個畫面,如官方操作流程來做,當然官方還有搭配Navigation來做,這部分我也沒有做。
接著我們需要多拉一個ViewController,然後將airpods的圖片放上去,並拉取一個Segment的元件來做表情符號、文字,因為表情符號還需要特定鍵盤,這部分就先跳過!
第二個畫面我們要多考慮UITextField,且切換至表情符號時候必須要將文字欄位隱藏起來,在這個章節我們都會說到!同時還要拉一個Label來放在airpods的外殼,以作為顯示效果。
畫面切換
第一個畫面的按鈕要跳到第二頁,就是按鈕按著右鍵拖曳過去,選擇showDetail即可完成!
寫程式
在開始之前,我有做一件事,就是新建一個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