xcode
Xcode 12 和 Swift 5.3 新功能詳解 讓你寫出更強大的程式碼!
WWDC 2020 上個月首次在前所未有的條件下完成,全球所有開發者都有機會坐在前排,了解 Apple 今年即將發佈的所有新功能和改進。與往常一樣,Apple 介紹了許多新東西和大進步,相信我們每個人都非常興奮,希望作很多新嘗試。 這篇文章旨在介紹 Xcode 和 Swift [...]
13 種實用 Xcode Shortcuts (快捷鍵) 讓你大大提升工作效率!
開發者通常會在 IDE 平台上花費很多時間,不論你是一個 iOS、macOS、tvOS、或是 watchOS 開發者,Xcode IDE 一定是你工作中最常接觸的平台。 我常常聽到開發者剛起步時,總是有很多不學 Xcode 快捷鍵的藉口,像是: 即使不記得快捷鍵,我還是可以使用滑鼠來完成工作。而且當我還是新手時,要學快捷鍵就像是要額外學習多一種東西。 [...]
SwiftUI 教學:利用 iPad 的 Swift Playgrounds 都可以學習 App 開發!
「我手上只有 iPad 而已,我可以用它來開發 iOS App 嗎?」 這是入門開發者最常問的問題。我一般的回應都是:「不行,你需要一台 Mac,來運行 Xcode 開發 iOS 程式。」 「那 iPad 的 Swift Playgrounds 呢?我可以用這個 App 來學習 Swift 和 App 開發嗎?」 相信你已經知道 [...]
Swift Package Manager 實用指南 讓你有效率地重複使用元件!
歡迎來到新的教學文章,我將會告訴你建立自己的 Swift packages 的實作方式。Swift Packages 包含了不同的程式碼,不管是能夠在專案內重複使用的、能分享給其他開發者的、及可以作為專案的相依套件 (dependency) 的。自 Xcode 11 起,Apple 已經把建立及管理 Swift Package [...]
簡單解決 Xcode 11.3 的 Bug:無法把間距約束設為零?
如果你已經把 Xcode 升級到 11.3 版本,你會發現當你使用 Interface Builder 創建 App UI 時,無法將間距約束條件 (spacing constraints) 的值設置為零。你可以打開 Interface Builder,然後點擊 “Add new constraints” 來試試看,將其中一個約束條件設置為 0 後,它卻自動將其恢復為 [...]
善用 Static Factory Method 重構程式碼 讓它更流暢好讀!
在使用一個物件之前,我們經常會需要對其進行設定。比如說,使用一個 UIView 之前,有時我們會需要指定它的背景色彩等屬性: 這些設定程式碼跟其它的邏輯程式碼是相當不同的存在。它們往往只跟被設定的那個物件有關,像這裡就是只跟 view 有關,跟 ViewController [...]
ViewController 轉場進階指南:進一步創建絢麗的轉場動畫
今天,我們會客製由一個視圖控制器 (ViewController) 轉場到另一個的轉場動畫。 為什麼會想要寫這個主題呢?過去,我花了很多時間去了解視圖控制器之間的轉換。遺憾的是,目前線上鮮有能簡單說明視圖控制器動畫轉場的教程。 因此,我決定寫幾篇文章,教大家用最簡單的方法,創建令人驚艷的轉場動畫。而這篇文章會比前一篇更進階。 [...]
ViewController 轉場初階指南:簡單打造酷炫的轉場動畫
今天,我們會客製由一個視圖控制器 (ViewController) 轉場到另一個的轉場動畫。 為什麼會想要寫這個主題呢?過去,我花了很多時間去了解視圖控制器之間的轉換。遺憾的是,目前線上鮮有能簡單說明視圖控制器動畫轉場的教程。 因此,我決定寫幾篇文章,教大家用最簡單的方法,創建令人驚艷的轉場動畫。 [...]
詳解 Swift 各種 Type Polymorphism 找出最適合的實作方式!
Polymorphism (多型)是程式設計的基本概念之一,指同一個介面的背後可以有不同的實作。比如說在 UIKit 裡面的 UIImage,它的底層實作可能是 Core Image,也可能是 Core Graphics,但我們在 call site 通常不需要在意這些。另一個例子是 Swift 的 String,它的底層可能是 Swift [...]
利用 CocoaPods 及 GitHub 一步步創建可重用的函式庫!
歡迎回到我們的教學系列文章!在上一篇教學文章中,你學到了如何使用 Network 框架來偵測及監控網路狀態。看來這個框架在 NetStatus 類別中運行得相當不錯,所以讓我們更進一步,來創建一個基於 NetStatus 類別的小型、開源框架吧!在本篇教學中,我們將透過 [...]