iOS編程
善用 Static Factory Method 重構程式碼 讓它更流暢好讀!
在使用一個物件之前,我們經常會需要對其進行設定。比如說,使用一個 UIView 之前,有時我們會需要指定它的背景色彩等屬性: 這些設定程式碼跟其它的邏輯程式碼是相當不同的存在。它們往往只跟被設定的那個物件有關,像這裡就是只跟 view 有關,跟 ViewController [...]
利用 SwiftUI 元件 大幅簡化 TabView 的管理流程!
像 Wikipedia 和 Facebook 這樣多模式 App,會使用 TabBar 介面來讓使用者從不同操作模式中切換,例如 Wikipedia 上有 History、Places、Saved、Search 四個 Tab。一般來說,我們會將 TabBar 與 UITabBarController 物件結合使用,但也可以在 App 中將它們用作獨立控件。TabBar 總是出現在螢幕最底部,並顯示一個或多個 [...]
利用尺寸類別 (Size Classes) 建構自適應佈局 靈活為不同螢幕尺寸做開發
以前,建構用於 iOS 的使用者介面非常容易,因為只有一種 iPhone 尺寸。但隨著時代的演進,我們現在會遇到許多不同 iPhone 的螢幕尺寸以及方向。 試想像一下,當我們要把在佈局顯示於不同尺寸的螢幕上,要如何對佈局進行調整? 為了達到這個目的,我們必須針對每個視圖元素,開發各自的條件 [...]
在 Google Maps 上繪製曲線 (Curved Lines) 風格新穎又省錢!
你知道嗎?當你在 Google Maps 使用 Google Directions APIs 繪製從位置 A 到位置 B 的路線時,費用非常高昂。 目前有些公司將真實路線轉換為像 Uber 那樣的直線,或者像 Deliveree 那樣的曲線。 因此,我認為本篇文章對以下讀者有所幫助: 想要畫出新風格的路線 不想付錢到 [...]
實作客製化 Apple Shortcuts 圖示系統 打造出色的使用者體驗
簡介 在本篇教學中,我將會分享如何創造一個在許多 App 中常見的圖示創建系統。我相當喜歡 Apple 的捷徑 (Shortcuts) App,所以一直都很想瞭解他們是如何創造這些東西,讓使用者可以為一個列表客製化圖示,而不是單純地選取一個已經完成的圖示。 當然,我已經先上網找了許多文章,但都沒有獲得任何相關資訊。所以,我決定自己動手做! [...]
ViewController 轉場進階指南:進一步創建絢麗的轉場動畫
今天,我們會客製由一個視圖控制器 (ViewController) 轉場到另一個的轉場動畫。 為什麼會想要寫這個主題呢?過去,我花了很多時間去了解視圖控制器之間的轉換。遺憾的是,目前線上鮮有能簡單說明視圖控制器動畫轉場的教程。 因此,我決定寫幾篇文章,教大家用最簡單的方法,創建令人驚艷的轉場動畫。而這篇文章會比前一篇更進階。 [...]
ViewController 轉場初階指南:簡單打造酷炫的轉場動畫
今天,我們會客製由一個視圖控制器 (ViewController) 轉場到另一個的轉場動畫。 為什麼會想要寫這個主題呢?過去,我花了很多時間去了解視圖控制器之間的轉換。遺憾的是,目前線上鮮有能簡單說明視圖控制器動畫轉場的教程。 因此,我決定寫幾篇文章,教大家用最簡單的方法,創建令人驚艷的轉場動畫。 [...]
詳解 Swift 各種 Type Polymorphism 找出最適合的實作方式!
Polymorphism (多型)是程式設計的基本概念之一,指同一個介面的背後可以有不同的實作。比如說在 UIKit 裡面的 UIImage,它的底層實作可能是 Core Image,也可能是 Core Graphics,但我們在 call site 通常不需要在意這些。另一個例子是 Swift 的 String,它的底層可能是 Swift [...]
利用 CocoaPods 及 GitHub 一步步創建可重用的函式庫!
歡迎回到我們的教學系列文章!在上一篇教學文章中,你學到了如何使用 Network 框架來偵測及監控網路狀態。看來這個框架在 NetStatus 類別中運行得相當不錯,所以讓我們更進一步,來創建一個基於 NetStatus 類別的小型、開源框架吧!在本篇教學中,我們將透過 [...]
Compositional Layout 詳解 讓你簡單操作 CollectionView!
隨著手機 App 介面和硬體的不斷進化,現在 App 介面的複雜度已經跟以往不能同日而語了。以前的 UI 可能就是一個簡單的 TabelView,把所有資訊都一視同仁地列出來,上面也不太會有甚麼複雜的互動,就程式的撰寫上,一個或兩個 UICollectionView 就有辦法滿足大部份的需求。還記得很久以前的 [...]