程式設計 (chéng shì shè jì) = programming/software design
進階 (jìn jiē) = advanced level
攻略 (gōng lüè) = strategy guide/techniques
39個 (sān shí jiǔ gè) = 39 items
必學 (bì xué) = must learn/essential study
第1章:打造自適應UI(Adaptive UI)
第2章:在 UITableView 加入區塊與索引列表
第3章:讓表格視圖 Cell 動起來
第4章:如何讀取與解析 JSON
第5章:如何整合 Twitter 與 Facebook 分享功能
第6章:如何在 App 中整合 Email 與附加檔案
第7章:使用 MessageUI 框架進行簡訊(SMS)與媒體簡訊
(MMS)傳送
8-14 :
第8章:要如何在地圖上取得方位與繪畫路徑
第9章:使用在地搜尋 API 搜尋附近興趣點
第10章:音訊錄製與播放
第11章:使用 AVFoundation 框架進行 QR Code 掃描
第12章:URL Scheme 運用
第13章:相機的運用
第14章:使用 AVKit 實做錄影與播放
15-21 :
第15章:使用 Google AdMob 來播放橫幅廣告
第16章:使用客製化字型
第17章:AirDrop 與 UIActivityViewController
第18章:使用集合視圖建立網格佈局
第19章:與集合視圖互動
第20章:使用尺寸類別與 UITraitCollection 來設計自適應集合視
圖
第21章:打造一個「 Today」Widget
22-30 :
第22章:側邊選單製作
第23章:視圖控制器轉場以及動畫
第24章:建立一個下滑選單
第25章:Cell 尺寸的自適應與動態型態
第26章:XML 解析與 RSS
第27章:使用UIVisualEffect來應用模糊背景
第28章:使用 Touch ID 驗證
第29章:建構一個似轉盤的使用者介面
第30章:用 Parse 幫 App 加上雲端後台
31-39 :
第31章:如何使用 Core Data 來預載一個 SQLite 資料庫
第32章:以折線與路徑來串連多個標註
第33章:在Swift專案中使用 CocoaPods
第34章:打造一個簡單的貼圖 App
第35章:使用訊息框架打造一個 iMessage App
第36章:使用 IBDesignable 與 IBInspectable 來自訂UI 元件
第37章:使用 Firebase 實作使用者登入驗證
第38章:使用 Firebase 來進行 Google and Facebook 驗證
第39章:使用 Firebase 雲端後台作遠端存取
第1章:打造自適應UI(Adaptive UI)
p 10 , 打造自適應UI
打造 (dǎ zào) – to build, to create, to forge, to craft
自適應 (zì shì yìng) – adaptive, self-adapting, responsive
最早的時候,只有一隻搭配 3.5 英吋顯示器的 iPhone,此時設計 App
是很容易的。
最早 (zuì zǎo) – earliest, in the beginning
的時候 (de shí hòu) – at the time, when
只有 (zhǐ yǒu) – only, there was only
一隻 (yī zhī) – one (classifier for devices)
搭配 (dā pèi) – equipped with, paired with
3.5 英吋 (3.5 yīng cùn) – 3.5 inches
顯示器 (xiǎn shì qì) – display, screen
的 (de) – possessive particle
iPhone – brand name (unchanged)
此時 (cǐ shí) – at this time
設計 (shè jì) – design
App – application (unchanged)
是 (shì) – is, was
很 (hěn) – very
容易 (róng yì) – easy
的 (de) – structural particle
你只需要應付兩種不同方向(直立以及橫向)即可。後
來 Apple 推出搭配 9.7 英吋的顯示器的 iPad。
你 (nǐ) – you
只需要 (zhǐ xū yào) – only need to
應付 (yìng fù) – deal with, handle
兩種 (liǎng zhǒng) – two kinds, two types
不同 (bù tóng) – different
方向 (fāng xiàng) – direction, orientation
(直立 (zhí lì) – portrait, vertical
以及 (yǐ jí) – and, as well as
橫向 (héng xiàng) – landscape, horizontal)
即可 (jí kě) – that’s all, that will do
後來 (hòu lái) – later, afterwards
Apple – brand name (unchanged)
推出 (tuī chū) – to launch, to release
搭配 (dā pèi) – equipped with, paired with
9.7 英吋 (9.7 yīng cùn) – 9.7 inches
的 (de) – possessive particle
顯示器 (xiǎn shì qì) – display, screen
的 (de) – possessive particle
iPad – brand name (unchanged)
倘若你是那個時期的 iOS 開發者,一個 App 必須要在 Xcode 中建立兩種不同的畫面設計
倘若 (tǎng ruò) – if, supposing that
你 (nǐ) – you
是 (shì) – are, were
那個 (nà gè) – that
時期 (shí qī) – period, era
的 (de) – possessive particle
iOS 開發者 (iOS kāi fā zhě) – iOS developer
一個 (yī gè) – one, a
App – application (unchanged)
必須 (bì xū) – must, have to
要 (yào) – need to
在 (zài) – in, at
Xcode – software name (unchanged)
中 (zhōng) – in, within
建立 (jiàn lì) – establish, create, build
兩種 (liǎng zhǒng) – two kinds, two types
不同 (bù tóng) – different
的 (de) – possessive particle
畫面 (huà miàn) – screen, interface
設計 (shè jì) – design
(也就是 Storyboard / XIBs ),一種是為了 iPhone 而設計,而另外
一種則是為了 iPad 來設計。
也就是 (yě jiù shì) = that is/meaning
一種 (yī zhǒng) = one type
為了…而設計 (wèi le… ér shè jì) = designed for
而另外一種 (ér lìng wài yī zhǒng) = and the other type
則是 (zé shì) = is/are (emphasizing contrast)
為了…來設計 (wèi le… lái shè jì) = designed for
p 11 , 美好時光總是短暫。快速來到 2015 年,Apple 的 iPhone 與 iPad 系
列已經有許多的變化。
加上iPhone 6 與 iPhone 6 Plus(現在是 iPhone 7 與 7 Plus)的推出,
你的 App 需要支援各種畫面尺寸與解析
度的機型,其中包括了:
iPhone 4/4s (3.5-英吋)
iPhone 5/5c/5s (4-英吋)
iPhone 6/6s/7 (4.7-英吋)
iPhone 6/6s/7 Plus (5.5-英吋)
iPad / iPad 2 / iPad Air / iPad Air 2 (9.7-英吋)
iPad Mini / iPad Mini 2 / iPad Mini 3 / iPad Mini 4 (7.9-英吋)
iPad Pro (9.7/12.9-英吋)
對 iOS 開發者來說,想建立一個能夠適用各種畫面大小,以及各方向
的通用 App 是一個很大的挑戰。那麼該如何設計一個畫面完美的 App
呢?
iOS8 帶來一個新觀念稱為自適應使用者介面(Adaptive User
Interfaces),是 Apple 對於要求支援任何 iOS 裝置不同螢幕大小或
方向的解決方案。現在已經可以讓 App 的 UI 適應某個裝置與該裝置
的方向。
這引導出了一個新的 UI 設計觀念稱為自適應佈局(Adaptive
Layout)。從 Xcode 7開始, 讓開發者可以使用介面建構器(
Interface Builder )來開發適應各種裝置、螢幕尺寸以及方向性的 App
UI,在Xcode 8,介面建構器重新設計並簡化了自適應使用者介面的
製作,甚至可以即時檢視在任何 iOS 裝置中渲染(render)後的結
果,你待會便能明白我所講的意思。
p 12, 為了完成自適應佈局,Apple 在 iOS8 以及以上的版本,導入了一個新
為了完成 (wèi le wán chéng) = in order to complete/achieve
自適應佈局 (zì shì yìng bù jú) = adaptive layout
在 (zài) = in/at
iOS8 以及以上的版本 (yǐ jí yǐ shàng de bǎn běn) = iOS 8 and above versions
導入了 (dǎo rù le) = introduced
一個新 (yī gè xīn) = a new…
的觀念,稱為尺寸類別(Size Class)。這可能是讓自適應佈局可行的
最重要觀念。
尺寸類別是一個裝置如何依其畫面尺寸以及方向來做分
類的概念。
你需要同時使用尺寸類別與自動佈局(Auto Layout)來設
計自適應使用者介面。
在 iOS 8/9/10 中,建構一個自適應佈局的程序
如下:
從設計一個通用的佈局開始。這個基本的佈局足夠支援大部份畫
面尺寸與方向。
選擇一個特定的尺寸類別,並且提供你的佈局規格。譬如想要這
個裝置在橫向(landscape)方向增加兩個標籤間的距離。
本章我將透過一個通用(universal) App 的範例來告訴你所有自適應
佈局的觀念,像是尺寸類別 。這個 App 會支援所有螢幕尺寸以及方
向。
自適應UI展示
這個專案不需要撰寫程式碼。主要使用 Storyboard 來進行使用者介面
元件的佈局,並且學習如何使用 Auto Layout 以及尺寸類別來讓 UI
可以自適應。學習完這一章後,你將會建立一個具有單一視圖控制器
(view controller),可以適應多種螢幕尺寸以及方向的 App。
第2章:在 UITableView 加入區塊與索引列表
第3章:讓表格視圖 Cell 動起來
第4章:如何讀取與解析 JSON
如何 (rú hé) = how to
讀取 (dú qǔ) = read/retrieve
與 (yǔ) = and
解析 (jiě xī) = parse/analyze
p 81 , 首先,什麼是 JSON ? JSON(JavaScript Object Notation 的縮寫)
首先 (shǒu xiān) = first/firstly
什麼是 (shén me shì) = what is
縮寫 (suō xiě) = abbreviation
是一個以文字為主、輕量型(lightweight),並且容易使用來儲存以
及交換資料的方式。
是 (shì) = is
一個 (yī gè) = a/one
以文字為主 (yǐ wén zì wéi zhǔ) = text-based
輕量型 (qīng liàng xíng) = lightweight
並且 (bìng qiě) = and
容易使用 (róng yì shǐ yòng) = easy to use
來 (lái) = to/for
儲存 (chǔ cún) = store
以及 (yǐ jí) = and
交換 (jiāo huàn) = exchange
資料 (zī liào) = data
的 (de) = possessive/descriptive particle
方式 (fāng shì) = way/method
通常用來呈現結構性的資料,以及在客戶端及 Server 端做資料交換時,
做為替代 XML 格式的另一種服務。許多我
p 82, 們每天使用的網頁服務都是以 JSON 為主的 API。大部份的 iOS App
包含 Twitter、
們 (men) = we/our (需要與前面的字組合,可能是”我們”或”他們”)
每天 (měi tiān) = every day
使用 (shǐ yòng) = use
的 (de) = possessive particle
網頁服務 (wǎng yè fú wù) = web services
都是 (dōu shì) = all are
以 JSON 為主 (yǐ JSON wéi zhǔ) = primarily JSON-based
的 (de) = possessive/descriptive particle
大部份 (dà bù fèn) = most/majority
的 (de) = possessive/descriptive particle
iOS App = kept as is
包含 (bāo hán) = including
Facebook 以及 Flicker,都是以 JSON 格式從後端
(backend)網站服務來傳送資料。
以及 (yǐ jí) = and
都是 (dōu shì) = all are/all use
以 (yǐ) = with/using
JSON 格式 (JSON gé shì) = JSON format
從 (cóng) = from
後端 (hòu duān) = backend
網站服務 (wǎng zhàn fú wù) = web services
來 (lái) = to/for
傳送 (chuán sòng) = transmit/send
資料 (zī liào) = data
舉例來說 以 JSON 來表示電影物件的方式像這樣:
舉例來說 (jǔ lì lái shuō) = for example
以 (yǐ) = using/with
來 (lái) = to
表示 (biǎo shì) = represent/express
電影 (diàn yǐng) = movie
物件 (wù jiàn) = object
的 (de) = possessive/descriptive particle
方式 (fāng shì) = way/method
像這樣 (xiàng zhè yàng) = looks like this
如以上所示,JSON 格式是更加易於閱讀的,並且比 XML 還來得容
易解析。
如以上所示 (rú yǐ shàng suǒ shì) = as shown above
JSON 格式 (JSON gé shì) = JSON format
是 (shì) = is
更加 (gèng jiā) = more
易於 (yì yú) = easy to
閱讀 (yuè dú) = read
的 (de) = descriptive particle
並且 (bìng qiě) = and
比 (bǐ) = compared to
還 (hái) = even
來得 (lái dé) = becomes/is
容易 (róng yì) = easy
解析 (jiě xī) = parse/analyze
我這裡不準備說明 JSON 的細節,這並非本章的學習目的,
倘若你想要學習更多有關 JSON 的技術,可以查閱 JSON
Guides(http://www.json.org/)。
p 83 , 自從 iOS 5 釋出後,iOS SDK 讓開發者能夠更容易地取得以及解析
JSON 資料。
它內建一個類別,稱為 NSJSONSerialization ,可以讓你輕
易地將 JSON 格式的資料轉換為物件(Object)。稍後在本章,我將
會告訴你,我們將示範如何使用 API 來解析一些JSON格式的資料,
並以網路服務(web service)來回傳資料。當你了解運作原理之後,
可以很容易地整合其他免費/付費網路服務來建構 App。
範例 App
如同先前,我們建立一個範例 App 稱為 KivaLoan。為何這個 App 稱
為 KivaLoan 的理由,是因為我們應用了 Kiva.org 的 JSON API。倘
若你沒有聽過 Kiva,這是一個非營利組織,主要任務是串連人們提供
借貸來減輕貧困。它讓每個人至少可以借貸出 25 美元,在世界各地
幫忙建立機會。Kiva 提供了免費的網路 API 讓開發者可以存取它們的
資料。針對我們的範例 App,我們將會呼叫以下的 Kiva API 來取得最
近的融資貸款,並以表格視圖來做呈現:
