在昨天的文章中,我們建立了一個專案,並嘗試加入一些UI控制項元件,今天我們要實際寫一些簡單的程式碼,讓App啟動時,可以自動朗讀『Hello, World.』
現在,我們馬上開始!
首先將畫面的目標選到ViewController上(上方左邊的第一個),切者到Identity Inspeector上,確認對應的class已選好
專案建立好的時候,預設已經做好連結,也可以與自訂的class來做綁定
在上面的工具列中,選擇File => New => File,
或是可以用快速鍵(cmd + N)
接者選擇Cocoa Touch Class,這個選項可以從內建的類別做繼承,可以讓class已經擁有一些功能。如果要自訂不做繼承,或是一般我們在建立Model的話,則可以選擇Swift File。其餘的部分可依照讀者的需求自行選擇。
這邊我們選擇UIViewController作為super class
並輸入類別的名稱HelloViewController,輸入的過程ViewController其實已自動填入,只要打上Hello即可
選擇建立的路徑,並建立檔案
將原本storyboard的class替換為『HelloViewController』
接下來我們今天來寫一些簡單的程式碼,讓App一啟動的時候,可以自動朗讀『HelloWorld』
import UIKit
import AVFoundation
override func viewDidLoad() {
super.viewDidLoad()
let content = "Hello, World."
let speechUtterance = AVSpeechUtterance(string: content)
// language: BCP-47, ref: https://gist.github.com/vitoziv/9108407
speechUtterance.voice = AVSpeechSynthesisVoice(language: "en-US")
// 說話的音量 0.0 - 1.0 (小聲到大聲)
speechUtterance.volume = 1.0
// 說話的速度
speechUtterance.rate = 0.5
// 音調的高低 0.5 - 2.0 (低到高)
speechUtterance.pitchMultiplier = 1
// 本句話說之前的延遲時間
//speechUtterance.preUtteranceDelay = 0
// 本句話說完到說下一句話之前的延遲時間
//speechUtterance.postUtteranceDelay = 0
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(speechUtterance)
}
這邊我們要念的文字為content
並使用AVSpeechUtterance這個類,來幫助我們準備後面要朗讀的內容與設定
最後使用AVSpeechSynthesizer這個類,來做朗讀(speak方法)
小技巧提示,在選取要複製的代碼區塊時,可以先按下Option (alt)鍵,在選取程式碼,這樣就可以略過一些不想複製的縮排,在寫作時非常方便
這個步驟可以將一段(一個區塊)的程式碼做抽離,抽離成一個方法,這對抽離方法(擷取方法)的這一項重構手法來說,非常的方便使用
對重構有興趣的讀者可以參考ref4 的重構,第一版為Java版(藍皮),後來又出了一版JavaScript的版本(紅皮)
此時,剛剛的程式碼已經被抽離為一個方法,我們將其從新命名為『sayHello』
並將fileprivate的file去掉,並移動到最下方,一般我們習慣將自訂的私有方法放到最下面,並加入Other Method的MARK,如圖
之後我們在尋找方法,就可以在上方的區塊,更容易的搜尋
到這邊,恭喜各位讀者已完成今日的進度。 (為自己鼓掌)
在今天的文章裡,我們介紹了如何將UIController與程式碼做連結,並加入一些簡單的程式碼,讓我們App 啟動時,可以有朗讀功能,也練習了簡單的重構方法的操作。
今天的內容就到這邊,感謝讀者們的閱讀。
https://github.com/chiron-wang/IT30_11
彼得潘的 Swift iOS App 開發問題解答集
https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E5%95%8F%E9%A1%8C%E8%A7%A3%E7%AD%94%E9%9B%86
iOS 13 & Swift 5 - The Complete iOS App Development Bootcamp - Angela Yu
https://www.udemy.com/course/ios-13-app-development-bootcamp/
深入淺出 iPhone 開發 (使用 Swift4) - WeiWei
https://www.udemy.com/course/iphone-swift4/
心智圖軟體Xmind
https://www.xmind.net/
重構|改善既有程式的設計, 2/e (繁體中文版)
https://www.tenlong.com.tw/products/9789865021832?list_name=c-refactoring