Xcode 11:画布不显示

stk*_*stk 30 ios swift swiftui xcode11

我正在尝试从Xcode 11运行新的Canvas功能,但是Canvas不会显示。我究竟做错了什么?

我刚刚创建了一个新的默认项目(单视图应用程序),对其进行了编译并激活了“编辑器>编辑器和画布”。我可以导航到项目中的每个文件,没有任何显示。

还需要做什么?

And*_*nov 56

官方教程所述,您需要使用Catalina macOS版本(10.15)

警告:Catalina不支持32位应用程序,某些旧应用程序在更新后将停止工作。

  • 当您尝试切换到“编辑器和画布”模式时,应在Xcode中明确传达此信息。“让我们什么都不做,强迫用户用谷歌搜索为什么它没有显示出来”是一种不好的方法。 (17认同)
  • 现在它表明在打开画布时。 (2认同)

Aka*_*oni 18

您仍然可以在操场上看到实时视图(未安装Catalina)。使用UIHostingController

import UIKit
import SwiftUI
import PlaygroundSupport



struct ContentView : View {
    var body: some View {

        Text("Hello World")
            .color(Color.blue)
    }
}

// Present the view controller in the Live View window
PlaygroundPage.current.liveView = UIHostingController.init(rootView: ContentView())
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Sim*_*mon 16

根据Apple官方教程,进一步添加其他答案:

要在Xcode中预览画布中的视图并与之交互,请确保您的Mac正在运行macOS 10.15 beta。

不幸的是,自从Beta版发布以来,我现在无法运行它,而且我没有备用Mac!


can*_*ler 15

更新 Mac OS 版本 10.15 或更高版本。更新 Xcode 11 或更高版本。之后,单击 Editor > Canvas 进行代码预览。

奖励:如果您想在左侧看到代码预览,您可以从菜单图标 > 布局 > 右侧画布更改布局。(我分享了截图)

奖金信息截图


Cra*_*007 11

预览版仅适用于 MacOS 10.15 Beta

您需要在 Xcode 11.0-Beta 中点击 Editor and Canvas Option,或者您可以点击顶部选项中的 Editor -> Editor and Canvas

附截图供参考。图片

图 2


C W*_*ams 8

复制swift文件的内容,


将文件移至回收站


再次创建 swift 文件


粘贴并运行您的代码




  • 令人震惊的是,这是唯一有效的方法。似乎不知何故,该文件不再被识别为 SwiftUI 文件,直到创建一个新文件。重新启动和重新启动 Xcode 没有任何帮助,甚至关闭/显示画布等。复制内容,删除文件,创建一个新文件并粘贴。瞧。 (2认同)

Ala*_*rpa 7

我尝试了所有这些步骤,但后来意识到我的文件中没有我的PreviewProvider设置。没有这个,预览将不会出现。

确保你有这样的设置:

struct YourView_Previews: PreviewProvider {
    static var previews: some View {
        YourView()
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以按照此线程中其他答案的建议进行操作,您的画布窗口应该会立即弹出。


Vik*_*sad 5

另外,请确保在 SwiftUI 文件中调用此函数(在实际View结构之外)。

import SwiftUI

@main
struct ContentView_App: App {
    init() {
    }
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView() // Initialize your struct
    }
}
Run Code Online (Sandbox Code Playgroud)