首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Xcode11游乐场中使用SwiftUI

在Xcode11游乐场中使用SwiftUI
EN

Stack Overflow用户
提问于 2019-06-26 10:33:50
回答 2查看 1.8K关注 0票数 2

我知道如何在常规的应用程序项目中使用Xcode11中的SwiftUI,但我想知道是否有一种方法可以在游乐场中使用它,即使我不能使用实时编辑器?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-26 11:12:02

当然,这很简单:

代码语言:javascript
复制
import PlaygroundSupport

PlaygroundPage.current.liveView = UIHostingController(rootView: PlaygroundRootView())

public struct PlaygroundRootView: View {
    public init() {}

    public var body: some View {
        Text("Hello World!")
    }
}

点击此处查看更多信息:https://github.com/attoPascal/SwiftUI-Tutorial-Playground

票数 5
EN

Stack Overflow用户

发布于 2019-06-26 11:33:49

在macOS Mojave上,除了使用PlaygroundPage.current.liveView之外,您还可以将SwiftUI视图绘制到图像中。这样你就可以在你的操场上拥有多个“实时视图”。

查看这篇文章:https://ericasadun.com/2019/06/20/swiftui-render-your-mojave-swiftui-views-on-the-fly/

示例代码驻留在https://gist.github.com/erica/fb5005f625207e108836175ff201d8f2

renderedImage实用程序代码(版权归Erica Sadun所有!)

代码语言:javascript
复制
import PlaygroundSupport
import SwiftUI
extension UIView {
  var renderedImage: UIImage {
    let image = UIGraphicsImageRenderer(size: self.bounds.size).image { context in
      UIColor.lightGray.set(); UIRectFill(bounds)
      context.cgContext.setAlpha(0.75)
      self.layer.render(in: context.cgContext)
    }
    return image
  }
}
extension View {
  var renderedImage: UIImage {
    let window = UIWindow(frame: CGRect(origin: .zero, size: CGSize(width: 320, height: 160)))
    let hosting = UIHostingController(rootView: self)
    hosting.view.frame = window.frame
    window.rootViewController = hosting
    window.makeKey()
    return hosting.view.renderedImage
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56764390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档