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

时间:2020-10-03 16:42:11

标签: swift xcode swiftui

问题

我有这种基本的样板格式,可以在操场上试用Swiftui。预览实时取景始终是这个小矩形。我不知道这是Swift Playgrounds中的错误还是我错过了其他东西? (见图)

代码

import SwiftUI
import PlaygroundSupport

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

PlaygroundPage.current.setLiveView(ContentView())

屏幕截图

enter image description here

更新的代码/屏幕截图

建议我提供一个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)

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以像这样使预览尺寸更大:

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

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

PlaygroundPage.current.setLiveView(hostingViewController)

答案 1 :(得分:0)

使用原始代码时,您可以将 .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
)

运行代码时将提供以下预览: Preview provided by the code in a Xcode Playground.