設計多執行緒 (Multi-Threaded) App 處理連續的資料流量更有效率!
身為一名在汽車產業裡的 iOS 開發者,我花了不少時間處理即時資料。現今許多 App 都需要有效率地處理連續的資料流量,為了確保不會卡住使用者介面,你很可能需要使用多執行緒來開發。 處理即時的資料流量非常有趣,因為你會不斷收到可以用來更新視覺畫面的新資料。這也是開發時最困難、最令人沮喪的事情,因為 [...]
實作無限分頁滾動視圖 (Scroll View) 為使用者帶來更完美的體驗和設計
所有 App 的成功,都取決於使用者是否常用這個 App(使用者留存率高 High User Retention),而成功的使用者體驗 (UX) 和界面設計對留存率就非常重要了!在設計 App 的時候,我們需要確保使用者可以利用最小限度而直覺的操作,來達到他們的目的;而且,這操作最好是一個吸引又有趣的過程。這次的教學就是希望利用客製化 [...]
利用 Swift Generic 建置可重複使用的 UITableViewController!
TableView Controller 是一個不可或缺的 UIKit 元件,幾乎每個 iOS App 都會用到它來顯示列表中的數據集合。當我們想要在 UITableViewController 中顯示不同類型的數據時,通常都會創建一個新的子類來顯示相關類型的數據。這種方法可行沒錯,但如果我們的 App 中有許多不同類型的數據,則可能導致重複和維護困難。 [...]
iOS 12 期待已久的功能:客製化通知分組 (Custom Notification Groups)
在最近一次的 WWDC 發佈會,Apple 發表了 iOS 12 的新功能,其中一個就是通知分組功能。 今天,讓我們做一個導覽說明,去了解如何擁有屬於自己的客製通知分組,這非常容易上手,尤其如果你有一個像是聊天 App 或社群軟體 App,但首先要確定: 本篇教學是由 [...]
Swift 程式碼教學:好好設定物件 讓程式碼更簡潔清晰
我們都看過這樣的 code: [crayon-5c69c7c712245018245803/] 簡單、明瞭,但當中卻有些問題,讓這段 code 不是那麼的好看。 甚麼問題呢? textField 這個詞重複出現了五次。 整段程式碼沒有階層,只能靠 comment 與空行去跟其它的程式碼做區隔。 這整段程式碼做的其實是語意上相關聯的一組事件。如果我們用白話來解釋的話,就是: [...]
ZEPETO 深入剖析 讓你了解 3D 角色與使用者的互動關係
在虛擬世界,無論是在網路、社群媒體,或是遊戲中,使用者往往需要一個虛擬的 3D 角色代替自己與內容、他者或是虛擬物件做互動,去感知和遊歷虛擬世界。 在遊戲研究裡,3D 角色更是代替了真實的自己,暢遊於遊戲文本當中,而這樣的一個角色,稱之為虛擬化身 [...]
UI Transition 教學:一起來學習 Whatsapp 也在用的 UI 轉場技巧吧!
這是 WhatsApp 從 UITabBar 轉換到 UIToolBar 的過程: 本教學的實作結果: 自從我開始開發 iOS apps 後,我就一直關注那些非常成功的 App 如何實作 UI 轉場 (UI transition) ,希望可以跟著實作在我的 App 內。 最近我正在做一個 App,它的 UICollectionView 嵌入在 UIViewController 內,而 [...]
Flutter 教學:移植 75,000 行原生程式碼的心路歷程
關於將大型 App 移植到 Flutter 的文章並不多,深入實作後,結果令我非常驚訝。 在澳洲有一個名為 Easy Diet Diary 的原生 iOS App。這個 App: 下載量達 120 萬次; 使用 Objective C 和 Swift 共同編寫,後端是 Amazon AWS; 包含 75,000 行程式碼。 我工作的公司曾將開發 Android [...]
了解 Delegation Pattern 讓你更有效率地實作類別之間的溝通!
什麼是協定 (Protocol)? 根據 Apple 官方文件說明: 協定用於定義統一方法、屬性、和其他要求,以實作特定任務或功能。類別、結構、和列舉都可以遵循協定,並供具體實作來滿足協定定義的要求。任何滿足協定要求的型別,就可以說是遵循該協定。 遵循協定的型別除了必須實作的要求外,你還可以擴展協定來實作部分要求或附加功能,供符合的型別使用。 [...]
Parallel Programming (平行程式設計) 可能會帶來甚麼問題?
簡介 在之前的幾篇文章中,我們已經探討了幾種不同控制並行 (concurrency) 的方法。作業系統也提供了一些的低階方式,舉例來說,Apple 提供了相關的框架、或是其他像是經常在 JavaScript 中被使用的 Promises 概念。儘管有些陷阱我在之前的文章中已經提過,但我意識到我說得不夠詳細,因此,為了讓你們更充分理解這些概念,本篇文章中的某些部份會重複涵蓋到之前的內容。 [...]