我思「Good Fast Cheap 只能三選二」

前言

之前在FB看到這張Gif圖,很有感觸!

如果你期待對方做得好又快,那就得要付出相對市價較高的價格來獲得,因為那是對方在服務/技術上追求極致所花費的代價。

如果你期待對方做得快又便宜,那不用太冀望這個產品/服務的品質會讓你感到滿意的,常言道:「一分錢一分貨」

如果你期待對方提供價錢便宜且高品質的產品,那你就得要耐心等待,因為「慢工出細活」。

那有沒有「好・快・便宜」三者兼具的情況呢?再來看看這張圖,就知道這是「癡人做夢」!

出處:http://solve100.com/the-good-fast-cheap-complex/

以Gif圖為目標,讓我們用Swift開發一個一模一樣的app來吧。

我們可以在這個app學到什麼?

  1. 學習用AutoLayout讓app Layout在不同尺寸的iDevice執行下都不會跑掉。
  2. UISwitch的用法。
  3. 利用funcation把重複的程式碼給簡化。

先來看app完整的操作畫面

程式說明

學習用AutoLayout讓app Layout在不同尺寸的iDevice執行下都不會跑掉。

透過這個架構可以發現把1個Switch及1個Label用1個View包起來,再把這3個View來做AutoLayout,這個技巧會讓你在版面編排起來會比較輕鬆,不然「牽一髮而動全身」的感覺真的很令人感到頭疼。

UISwitch的用法

  1. 判斷UISwitch狀態是否開啟,用isOn這個屬性判斷,true為開啟狀態,false為關閉狀態。
  2. 設定UISwitch開關,用 <目標Switch>.setOn(false, animated: false)這個function去設定。
  3. 在Xcode的Storyboard裡,UISwitch屬性欄,「On Tint」,為調整Switch的顏色,屬性名稱為tintColor。

利用funcation把重複的程式碼給簡化

利用按下Switch後傳回的tag來判斷是按那一個Switch,用Switch-case去跑邏輯,原先的原始碼為:

仔細一看,每一個Switch跑的邏輯都是大同小異,不同點是在於要處理本身自己之外的兩個Switch在觸發時要給他的動作。

若改用function把重複的程式碼貼進去,就可以重複使用呼叫了,整體版面看起來也比較簡潔清爽多了,而且維護起來,只要修改function內容的程式,就可以一次套用到不同的元件事件了,是不是很方便呢?

app完整程式專案下載

--

--