Использование SwiftUI на игровой площадке Xcode 11 - PullRequest
0 голосов
/ 26 июня 2019

Я знаю, как использовать SwiftUI в Xcode 11 в обычном проекте приложения, но мне было интересно, есть ли способ использовать его и на игровых площадках, даже если я не мог использовать живой редактор?

Ответы [ 2 ]

2 голосов
/ 26 июня 2019

Конечно, это довольно просто:

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

0 голосов
/ 26 июня 2019

В 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 код утилиты (авторское право Эрики Садун!)

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
  }
}
...