Chi Kuo
5 min readMar 6, 2018

Android 工程師來跳跳 iOS 坑

因為工作需要,讓我有機會從 Android 開發工程師,伸了一根小拇指踏入了 iOS 開發者的圈圈裡。本身密集開發 Android 的時間,大概兩三年,開發 iOS 到現在大概也快一年了。

回頭看看這段歷程,老實說語言的轉換其實不難,畢竟 Android & Swift 都屬物件導向語言,在切換上不會花上太多時間,查查語法也就能上手。個人覺得難的反而在 Xcode 上的操作,像是用 StoryBoard 佈局、各檔案與設定之間的關係,還有必須了解的像是 Android 與 iOS 不同元件的使用方式、生命週期的差異,以及因應不同作業系統上,使用者習慣操作模式的不同等等。

自身開發時,感受到比較大的痛苦點則有幾項 —

(1) 對 StoryBoard 操作的不熟悉

其實 Android & iOS 的開發到底孰難孰易,各擁護方應該都可以爭論個三天三夜吧 (笑)。但依小的淺見,如單單看佈局的難易度,Android 是可以非常快達到你想要的佈局的,或許跟 Android 為了順應長期以來有多到數不清的螢幕大小脫不了關係,運用簡單的 LinearLayout / RelativeLayout 再處理好與上層 layout 的相依性 (像是單用 padding / margin ) 並掌握彈性的佈局重點,就能有不錯的成果。但相對的,如果你的佈局必須為各版型都客製畫面時,則是相較麻煩的。

iOS 在 StoryBoard 上的佈局則複雜許多,尤其是約束的設定對剛接觸的新手來說,很容易會設置完不知差異在哪。最痛苦的莫過於看著一堆紅線不知所措了,這也是最讓新手頭痛的地方。對越複雜的排版,感受則越是顯著,所見即所得也不見得真的是所見即所得,可能執行後你才發現上方或下方莫名多出一塊等等,這些都是需要多一些經驗累積才能上手、避開地雷的地方。但 iOS 對於適應各種版型,則是相較輕鬆的 (畢竟也只需要針對固定幾種螢幕大小做檢查即可)。

(2) Swift 對型態的限制較嚴謹

Swift 在形態的轉換上、nil 的限制等等則比較嚴謹,剛開始真的會被 Optional 搞的盧煞煞,一下要加問號、一下要加驚嘆號、一下問號還要加兩個,沒適當的解 Optional ,印出值時就有得你崩潰的了。

(3) 不容易跳脫原本語言的思考框架

舉例來說,iOS 的介面佈局方式與 Android 的佈局方式就有很大的差異,在剛開始開發 iOS 時,常常會用 Android 的開發邏輯去思考 iOS (由於本身開發時程有點緊迫,所以也沒有時間重頭細細的研讀 iOS 有什麼特性啊、生命週期是什麼、每個元件要如何使用等等。大多採目標導向,就是照著原有的 Android App 介面去刻,我要一個首頁,Android 用 RecyclerView,iOS 好像可以用 TableView 達到相同目的,好!那我就來研究看看怎麼用 tableView ) ,有時候就會因為元件本身的限制而卡住了自己的思想。

(4) 不同程式語言切換時,語法易混淆

由於兩者語言同為物件導向式語言,所以寫法、使用方式其實很接近,轉換的成本很低。但因為工作的關係必須一次管兩種程式語言的專案,可能 Swift 開發到一半,就要回頭新增 Android 的功能、維護既有程式碼等等,常常一切換,就必須要有一小段的適應期。最常發生的就是很順手地在 Swift 的結尾加上分號、看到 button 就順手的打上監聽語法、nil & null 傻傻分不清楚,或是在 Android 給他加上惱人的驚嘆號或問號了。

但有趣的地方也很多 —

以前菜菜的時候,都會覺得面對不懂的語言或是跳了一個平台,就會有很大的鴻溝。但當你實際投入進去,卻發現其實鴻溝也沒有你想像的大啦~ 在有基礎的狀態下,反而能獲得很大的成就感,也更能宏觀地看待程式設計、APP設計的整個藍圖。對我自己而言,同時觸碰兩個平台,最有趣的就是觀察不同平台之間的使用者經驗差異了。

簡單舉幾個例子

● 像是 Android 習慣把主要功能切換,擺在上方的或是左側的漢堡選單內,iOS 則習慣把主要功能切換置於下方。

● Android 的返回上一頁,使用者有兩種習慣,一是左上方,一是左下方根據裝置而不同的 (實體 / 虛擬) 按鍵,iOS 則只有導覽列的左上方會有返回鍵。

● 當你要對列表中的不同 item 項目做操作時,Android 習慣會有三個點點或是齒輪的符號在右上角,來代表更多的設定,iOS 則不會有這樣的習慣,所以通常當項目過多時,我們會使用寫著“更多”的按鈕來表示。

● Android 的畫面風格上,會有許多的彈出視窗,常搭配各種期望動作選項,出現的位子也是五花八門,可能在你的按鈕周圍,也可能出現在畫面正中央, iOS 的彈出視窗通常出現在下方,除了警告的 Alert 外,較不常有出現在畫面正中央的操作。

其他還有許多,諸如對列表項目的各種動作, Android 習慣對項目長按,iOS 則習慣將項目往左右滑就會跳出動作選單,還有像是不同平台間的設計風格、推播通知的樣式…各有不同的建議及規範等等,都是非常有趣的,下次有機會再跟大家分享啦~