您如何在 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 中的“运行此页面时出现问题”消息?
如何将数据从 Playground 页面传递到 Swift Playgrounds 中的另一个 Playground 页面?