100道iOSApp謎題 #55 開不了口的告白 & 我們一起學貓叫

作業題目:

這次作業花在拉元件的時間比寫程式還多..用了很多stackview讓元件排列整齊。

main.storyboard

相同元件的IBOutlet使用Outlet Collection:

UISlider Outlet Collection
UILabel Outlet Collection

將三個Slider的Tag設成不同的值:

speed slider的tag = 0
pitch slider的tag = 1
volume slider的tag = 2

再把三個Slider都連到同一個IBAction,參數的Type要選擇UISlider,透過剛剛設定的tag,就能判斷現在使用者是操作哪個slider,並將值顯示在Label上

更改slider時會觸發的IBAction

和上面Slider一樣,修改每個button的tag值,從0開始依左到右,上到下的順序增加。然後把每個button連到同一個IBAction,參數要設成UIButton。另外用一個Array用和tag一樣的順成存放每個動物的叫聲,之後就可以用tag當Array的index取得選到動物的叫聲,然後呼叫speak function發出聲音。

按下動物發出叫聲

最後是把TextField輸入的文字說出來的Function,這裏加入一個選擇說中文或英文的SegmentedControl,前面動物固定只能用英文發聲。

按下嘴巴說出TextField內容

用AVSpeechUtterance實作發聲的speak function:

ViewController.swift
App Demo

Reference:

--

--