SwiftUI在Swift Playground预览大小看起来不正确

vbopmzt1  于 2023-09-30  发布在  Swift
关注(0)|答案(3)|浏览(109)

问题

我有一个基本的样板文件格式,用于在Playground试用Swiftui。预览实时视图始终是这个小矩形。我不知道这是Swift Playgrounds中的一个bug还是我错过了什么?(见图)

代码

import SwiftUI
import PlaygroundSupport

struct ContentView: View {
    var body: some View {
        Text("Hello World")
    }
}

PlaygroundPage.current.setLiveView(ContentView())

截图

更新代码/截图

有人建议我提供一个UIHostingController并设置preferredContentSize。我试过了,没有变化。同样的问题。见下面的屏幕截图。

import SwiftUI
import PlaygroundSupport

struct ContentView: View {
    var body: some View {
        Text("Hello World")
    }
}

let contentView = ContentView()
let hostingViewController = UIHostingController(rootView: contentView)
hostingViewController.preferredContentSize = CGSize(width: 700, height: 800)

PlaygroundPage.current.setLiveView(hostingViewController)

aamkag61

aamkag611#

您可以在NavigationStack中添加您的“Text”,它会像在项目中一样显示预览。

2skhul33

2skhul332#

在使用原始代码时,可以将.frame修饰符与ContentView()一起使用。你必须提供一个与高度,当选择这些值足够大,你的观点应该更有吸引力。添加修改后的代码可能如下所示:

import SwiftUI
import PlaygroundSupport

struct ContentView: View {
    var body: some View {
        Text("Hello World")
    }
}

PlaygroundPage.current.setLiveView(
    ContentView()
        .frame(width: 500.0, height: 500.0)
        //provide a width and hight of your choice
)

运行代码时,将提供以下预览:

sdnqo3pr

sdnqo3pr3#

您可以像这样使预览大小变大:

let contentView = ContentView()
let hostingViewController = UIHostingController(rootView: contentView)

/// give us some more room
hostingViewController.preferredContentSize = CGSize(width: 700, height: 800)

PlaygroundPage.current.setLiveView(hostingViewController)

相关问题