您如何在 Swift Playgrounds 中的 iPad 上的 SwiftUI 中渲染 Text("Content") 与 Mac 上的 Xcode?

Posted

技术标签:

【中文标题】您如何在 Swift Playgrounds 中的 iPad 上的 SwiftUI 中渲染 Text("Content") 与 Mac 上的 Xcode?【英文标题】:How do you render Text("Content") in SwiftUI on an iPad in Swift Playgrounds vs. Xcode on a Mac? 【发布时间】:2021-04-28 18:51:45 【问题描述】:

以上代码可在 Mac 上使用 Xcode 编辑器运行。但是,在 iPad 上使用 Swift Playground 的编辑器返回相同的代码:abort() called。如何在 iPad 上渲染 Text()?

我按照视频中的说明进行操作:

https://developer.apple.com/videos/play/wwdc2020/10643/

我在 Apple 的开发者论坛中发现了一个类似的问题,但没有真正的解决方案:

https://developer.apple.com/forums/thread/667357

我尝试减小尺寸,但没有帮助:

“我会假设基于 Abort() 的另一个问题,如果 Abort() 即将崩溃,则会调用它,并且视图似乎没有在实时视图中获得屏幕的边界,所以它不知道如何/在哪里渲染视图。”

import SwiftUI
import PlaygroundSupport

struct ProgressView: View 
   
   var body: some View 
       ZStack 
           Circle()
           .stroke(lineWidth: 40)
           .foregroundColor(.blue)
               Text("25%")
       
   
   


PlaygroundPage.current.setLiveView(ProgressView().padding(150))

【问题讨论】:

您是否要在 iPad/iPhone 上预览它?我刚刚检查了这段代码,一切看起来都很好。 iPad。今年夏天我要教的课上,孩子们会拿到 iPad,但没有 Mac。它在 Mac 上运行良好。我希望让他们在 iPad 上使用 Swift Playgrounds 编辑器——我只需要弄清楚如何获得与 Mac 相同的结果。 有趣...刚刚测试并得到了相同的结果。 似乎是一个错误。查看this thread - 目前的解决方法是添加一个.frame,这确实不需要... 【参考方案1】:

这很可能是一个错误——我提交了反馈 #FB9092837。但在 Apple 修复它之前,添加一个硬编码的 .frame 可以作为一个 hacky 修复。

.frame(width: 500, height: 500)

但是,加载需要一些时间......它首先呈现在左上角,几秒钟后,移动到中心。

我发现如果你将ProgressView 放在另一个容器视图中,并在那里设置框架,它会快得多。

代码如下:

import SwiftUI
import PlaygroundSupport

struct ProgressView: View 
    var body: some View 
        ZStack 
            Circle()
                .stroke(lineWidth: 40)
                .foregroundColor(.blue)
            Text("25%")
        
    


struct ContainerView: View 
    var body: some View 
        ProgressView()
            .frame(width: 500, height: 500)
    


PlaygroundPage.current.setLiveView(ContainerView())

【讨论】:

以上是关于您如何在 Swift Playgrounds 中的 iPad 上的 SwiftUI 中渲染 Text("Content") 与 Mac 上的 Xcode?的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 文件添加到 Swift Playgrounds

如何将视频保存到 Swift Playgrounds 中的 URL

如何解决 Swift Playgrounds 中的“运行此页面时出现问题”消息?

Swift Playgrounds 中的简单笔记应用

如何将数据从 Playground 页面传递到 Swift Playgrounds 中的另一个 Playground 页面?

有没有办法在 Swift Playgrounds 4 中重新缩进线条?