【SwiftUI】プレビュー不要なクラスで Canvas の自動表示を抑止する
モチベーション
SwiftUI の Canvas を使ったプレビューは大変便利ですが、この機能が不要なファイルもあります。
たとえば、iOS アプリ開発における、WindowSceneDelegate
や AppDelegate
です。
これらは UI 以外の実装も担っているので、Canvas の表示は鬱陶しいと思います。
実は、Canvas の自動表示は、import SwiftUI
が記載されているかどうかで判定しているみたいなので、記法を工夫することで Canvas の自動表示の抑止ができます。
環境
- Xcode Version 11.5 (11E608c)
- Xcode Version 12.0 beta 2 (12A6163b)
Life Cycle
UIKit App Delegate
UIWindowSceneDelegate で SwiftUI に依存しているクラスは、UIHostingController
のみなので、UIHostingController
のみにインポートを制限します。
import UIKit
import class SwiftUI.UIHostingController
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
// ...
}
AppKit App Delegate
NSHostingView
のみにインポートを制限します。
import Cocoa
import class SwiftUI.NSHostingView
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
// ...
}
SwiftUI App
Xcode 12 からは SwiftUI でアプリのエントリポイントを実装できますが、
ここで登場する App
, Scene
などは View
ではないので、プレビューは不要だと思います。
App
, Scene
, WindowGroup
のみインポートすることで、Canvas を抑止できます。
import protocol SwiftUI.App
import protocol SwiftUI.Scene
import struct SwiftUI.WindowGroup
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
Author And Source
この問題について(【SwiftUI】プレビュー不要なクラスで Canvas の自動表示を抑止する), 我々は、より多くの情報をここで見つけました https://qiita.com/takehito-koshimizu/items/7c56c2e60efe074410c8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .