swiftでコードのみで画面のパーツなどを配置しています。
現在はレイアウトを確認する際にいちいちビルドして確認しているのですが、SwiftUIのようにコードを変えた瞬間に画面のレイアウトのプレビューを表示する機能はXcodeにはありますか?調べてもSwiftUIの記事ばかりでしたのでSwiftを使う場合のプレビューの表示方法をご教授願いたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
そんな機能があったらいいなぁ、と思って調べていたらありました。
私自身まだよくわかっていませんが、SwiftUI で従来の UIKit を表示させる方法があるようです。
Xcode Previewsという機能のようです(ViewControllerのほか、Viewを表示させることも可能のようです)。
日本語だと
- メルカリのブログ - Xcode Previewsを用いたUIKitベースのプロジェクトの開発効率化
英語で簡潔に説明してあるのは
あたりでしょうか。
私は英語版を参考にしました(正直、メルカリのブログはまだ十分理解していません。理解できればもっと応用が効くようになります)。
ちなみに、このような感じでプレビューできます。
ある程度の動作ならば(ボタンを押したときの機能なども)確認できるようです。
基本的には
- 通常と同じようにプロジェクトを作成(SwiftUIを選択しないこと)
- 表示したいViewController を
UIViewControllerRepresentable
に準拠させ、必要なメソッドを実装する。
という流れになるようです。
最初からプレビューの画面をだすことはできませんが、一度 StoryBoard などに切り替えて、コード 編集画面に戻るとプレビューが表示されるようです(ビルドさせても表示できるかもしれません)。
スクリーンショットは「逆引き Swift - UILabelで文字を表示」のコードを引用しましたが、プレビューを表示させる部分は先に挙げたXcode Previews for View Controllersのコードを流用して使いました。
Swift
1#if DEBUG 2import SwiftUI 3 4extension ViewController: UIViewControllerRepresentable { 5 func makeUIViewController(context: Context) -> ViewController { 6 let storyboard = UIStoryboard(name: "Main", bundle: nil) 7 // ViewController をインスタンス化できれば別の方法でも良い 8 guard let viewController = storyboard.instantiateViewController( 9 identifier: "ViewController") as? ViewController else { 10 fatalError("Cannot load from storyboard") 11 } 12 13 return viewController 14 } 15 16 func updateUIViewController(_ uiViewController: ViewController, 17 context: Context) { 18 } 19} 20 21struct ViewControllerPreviews: PreviewProvider { 22 static var previews: some View { 23 ViewController() 24 } 25} 26#endif
様々な端末によるプレビュー方法については、メルカリのブログの方が詳しいです。
投稿2020/07/07 12:14
編集2020/07/07 21:06総合スコア5086
0
ベストアンサー
@IBDesignable とかはどうでしょうか。
現在の運用だとプレビュー用のStoryboardやxibファイル等を作る必要があるかと思いますが、、
あと、前に使っていた時はPCのスペックかXcodeの性能か、「瞬時に」というほどレスポンスはよくなかったです。汗
[参考]
https://techracho.bpsinc.jp/wingdoor/2020_02_13/87782
https://qiita.com/ShoichiKuraoka/items/228b9e3fc4f886f94f16
https://qiita.com/stastaahaha/items/e45e7559255fb7666fd8
投稿2020/07/07 15:11
総合スコア1186
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/07 12:17
2020/07/07 12:48