UIKit

如何在UIKit開發中使用Xcode預覽(Preview)

在Xcode 15之前,預覽功能僅限於SwiftUI框架。然而,隨著最新版Xcode的發布,蘋果將此功能的利用擴展到UIKit。在這個教程中,讓我們看看你如何在開發 UIKit apps時使用此預覽功能。
如何在UIKit開發中使用Xcode預覽(Preview)
如何在UIKit開發中使用Xcode預覽(Preview)
In: UIKit

當SwiftUI首次推出時,引起我興趣的一個相當棒的功能就是即時預覽功能。此功能使開發者能夠在Xcode中直接預覽任何視圖的使用者介面,完全不需要模擬器。

Xcode 15之前,預覽功能僅限於SwiftUI框架。然而,隨著最新版Xcode的發布,蘋果將此功能的利用擴展到UIKit。

在這個教程中,讓我們看看你如何在開發 UIKit apps時使用此預覽功能。

使用 #Preview 預覽視圖控制器

要在Xcode中預覽UIKit視圖或視圖控制器,你需要做的就是使用#Preview宏設置一個預覽代碼塊。下面是一個例子:

#Preview {
    let vc = ViewController()
    return vc
}

對於有使用SwiftUI中的#Preview功能經驗的人來說,語法應該相當熟悉。當你輸入預覽程式碼後,Xcode會顯示一個額外的面板,提供你的視圖控制器的預覽。

uikit-xcode-preview

當你修改ViewController的程式碼時,Xcode應該會立即展示變化。例如,你可以嘗試修改以下的程式碼:

class ViewController: UIViewController {

    lazy var helloButton: UIButton = {
        let button = UIButton(configuration: .borderedProminent())
        
        button.setTitle("Hello", for: .normal)
        
        let action = UIAction { action in
            print("Hello")
            
            let alertController = UIAlertController(title: "Hello", message: "Hello World", preferredStyle: .alert)
            let alertAction = UIAlertAction(title: "Okay", style: .default)
            
            alertController.addAction(alertAction)
            self.present(alertController, animated: true)
        }
        
        
        button.addAction(action, for: .touchUpInside)
        
        button.translatesAutoresizingMaskIntoConstraints = false
        
        return button
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.view.addSubview(helloButton)
                
        helloButton.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
        helloButton.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 0).isActive = true

    }

}

預覽面板將會顯示一個寫著 "Hello" 的按鈕。如同在SwiftUI開發中,你可以直接在預覽中檢查使用者介面。如果你按下 "Hello" 按鈕,一個警告或是提醒將會彈出。

swiftui-uikit-xcode-preview

在介面建立器中預覽視圖控制器

#Preview宏也可以用來預覽在介面建立器(或故事板)中設計的視圖控制器。假設你已經創建了一個視圖控制器,並配置了一個故事板ID,你可以寫以下的程式碼來在Xcode中預覽它:

#Preview("LoginView") {
    let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginView") as UIViewController
    
    return vc
}

你使用了 instantiateViewController 方法來實例化視圖控制器並在Xcode中預覽它。選擇性地,你可以給預覽一個名稱(例如:LoginView)。

swiftui-uikit-preview-storyboard

總結

隨著Xcode 15的釋出,蘋果將原先只有在SwiftUI中才有的即時預覽功能,也擴展到了UIKit。開發者現在可以透過#Preview macro,在Xcode中預覽任何UIKit視圖或視圖控制器的使用者介面,這消除了使用模擬器的必要。此功能也擴及到在介面建立器或故事板中設計的視圖控制器。請充分利用此預覽功能來加速你的UIKit開發過程!

作者
Simon Ng
軟體工程師,AppCoda 創辦人。著有《iOS 17 App 程式設計實戰心法》、《iOS 17 App程式設計進階攻略》以及《精通SwiftUI》。曾任職於HSBC, FedEx等跨國企業,專責軟體開發、系統設計。2012年創立AppCoda技術部落格,定期發表iOS程式教學文章。現時專注發展AppCoda業務,致力於iOS程式教學、產品設計及開發。你可以到推特與我聯絡。
評論
更多來自 AppCoda 中文版
輕鬆地在 iOS 15 創建 Bottom Sheet:UISheetPresentationController
UIKit

輕鬆地在 iOS 15 創建 Bottom Sheet:UISheetPresentationController

在 iOS 15 中 UIKit 推出的新功能中,其中一個亮點就是 UISheetPresentationController。在這篇文章中,Simon 會為大家介紹這個新類別,現在只需幾行程式碼,就可以輕鬆地創建 Bottom Sheet,並客製化其屬性。一起來在 App 上使用這個漂亮的 UI Pattern 吧!
很好! 你已成功註冊。
歡迎回來! 你已成功登入。
你已成功訂閱 AppCoda 中文版 電子報。
你的連結已失效。
成功! 請檢查你的電子郵件以獲取用於登入的連結。
好! 你的付費資料已更新。
你的付費方式並未更新。