FormattedListKit: Elegant List Displays Made Easy

When developing iOS and macOS applications, formatting lists is a common requirement. Whether it's terms and conditions, setting options, or tutorial steps, we often need to present ordered or unordered list content. However, Apple's native frameworks have relatively limited support for list formatting, which often puts developers in a dilemma: existing solutions aren't perfect, while heavier solutions seem like overkill.

To solve this problem, I developed FormattedListKit, a lightweight yet fully-featured Swift Package specifically designed for creating beautifully formatted ordered and unordered lists.

繼續閱讀 ➜

在 KOReader 使用偽直排字體

我很喜歡閱讀中文書籍,有些類型的中文書在直排版面下閱讀總是特別有韻味。然而在電子閱讀器上,要享受直排閱讀的體驗並不容易。今天要分享一個在 KOReader 上實現「偽直排」的方法,讓我們能在電子書閱讀器上,也能享受傳統直排的閱讀樂趣。

繼續閱讀 ➜

如何建立 iOS Share Extension

在網路上已經有很多關於 iOS Share Extension 的教學,例如這裡就有一篇。有需要的人可以自行在網路上搜尋,這邊就不多作著墨。我這次想要分享的主要是在開發 share extension 的過程遇到一些要注意的事項,以及踩到的一些坑。

我的開發環境是 macOS Sonoma + Xcode 15,使用 Swift 開發。

要建立一個 share extension 很簡單,就是在你的專案新增一個 target 然後選擇 Share Extension 即可。Xcode 會自動幫忙產生必要的檔案,以及做好基本設定。

繼續閱讀 ➜

Repository Design Pattern

為何需要 Repository Design Pattern

在最近參與的專案當中,我們開始導入了 Repository Design Pattern,一句話總結它的用途就是「負責處理資料的新增、讀取、更新、刪除 (CRUD) 的角色」,建立這樣一個角色來負責處理資料能帶來什麼好處呢?

繼續閱讀 ➜

電子書閱讀器推薦字體

我是個很喜歡看電子書的人,我使用的是 Kobo 電子書閱讀器 搭配 KOReader,電子書閱讀器提供了許多便利之處。首先,它們輕巧易攜帶,讓我可以隨身攜帶我的閱讀清單,輕鬆切換不同的書籍。我通常會交替閱讀兩三本書,這讓我的閱讀體驗更加豐富,閱讀過程也更加放鬆。此外,我也很喜歡閱讀器可以自訂文字排版的功能。

對我來說,自訂文字排版是非常重要的,因為它可以大幅提升閱讀的舒適度。特別是字體的選擇,對閱讀體驗至關重要。以下是我必裝的幾款字體:

繼續閱讀 ➜

如何使用 PHPickerViewController 取得 PHAsset

PHPickerViewController 是系統內建的一個照片選取工具,透過 PHPickerConfiguration 設定它,然後從它的 delegate function func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) 取得用戶選取的結果。看起來非常簡單直覺,直到我踩了坑...

繼續閱讀 ➜