質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

3回答

831閲覧

swiftでのコードのみのレイアウトの際に画面のプレビューを見たい

oeiqgfodgfhps

総合スコア35

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/07/07 10:48

swiftでコードのみで画面のパーツなどを配置しています。

現在はレイアウトを確認する際にいちいちビルドして確認しているのですが、SwiftUIのようにコードを変えた瞬間に画面のレイアウトのプレビューを表示する機能はXcodeにはありますか?調べてもSwiftUIの記事ばかりでしたのでSwiftを使う場合のプレビューの表示方法をご教授願いたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

そんな機能があったらいいなぁ、と思って調べていたらありました。

私自身まだよくわかっていませんが、SwiftUI で従来の UIKit を表示させる方法があるようです。
Xcode Previewsという機能のようです(ViewControllerのほか、Viewを表示させることも可能のようです)。

日本語だと

英語で簡潔に説明してあるのは

あたりでしょうか。
私は英語版を参考にしました(正直、メルカリのブログはまだ十分理解していません。理解できればもっと応用が効くようになります)。

ちなみに、このような感じでプレビューできます。
ある程度の動作ならば(ボタンを押したときの機能なども)確認できるようです。

イメージ説明

基本的には

  • 通常と同じようにプロジェクトを作成(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
TsukubaDepot

総合スコア5086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TsukubaDepot

2020/07/07 12:17

もちろん、コード中でパラメータを変更したらリアルタイムでプレビューに反映されます。
fuzzball

2020/07/07 12:48

あぁ、メルカリさんの記事見た記憶がある‥。失礼しました。
guest

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

Kapustin

総合スコア1186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ないです。。。。。。

投稿2020/07/07 11:32

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問