SwiftUIの他に各種フレームワークをimportすると使えるViewやModifierです。
MapKit
Map
が使えます。
サンプルコード
import SwiftUI
import MapKit
struct SwiftUIView: View {
@State var region: MKCoordinateRegion
var body: some View {
Map(coordinateRegion: $region)
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
let initialCoordinate = CLLocationCoordinate2DMake(40,40)
let span = MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5)
let region = MKCoordinateRegion(center: initialCoordinate, span: span)
return SwiftUIView(region: region)
}
}
プレビュー
SpriteKit
SpriteView
が使えます。
GameScene
ファイルはXcodeプロジェクトをMultiplatformで作成した際のものを使っています。
サンプルコード
import SwiftUI
import SpriteKit
struct SwiftUIView: View {
let scene: SKScene
var body: some View {
SpriteView(scene: scene)
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
guard let scene = SKScene(fileNamed: "GameScene") as? GameScene else {
abort()
}
scene.scaleMode = .aspectFit
return SwiftUIView(scene: scene)
}
}
プレビュー
AuthenticationServices
SignInWithAppleButton
が使えます。
サンプルコード
import SwiftUI
import AuthenticationServices
struct SwiftUIView: View {
var body: some View {
SignInWithAppleButton(.continue) { _ in
} onCompletion: { _ in
}
.frame(width: 300.0, height: 44.0)
.signInWithAppleButtonStyle(.black)
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView()
}
}
プレビュー
StoreKit
appStoreOverlay
が使えます。
サンプルコード
import SwiftUI
import StoreKit
struct SwiftUIView: View {
@State var showOverlay:Bool = false
var body: some View {
Button("App Store Overlay") {
self.showOverlay.toggle()
}
.appStoreOverlay(isPresented: $showOverlay) {
SKOverlay.AppConfiguration(appIdentifier: "687721425", position: .bottom)
}
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
return SwiftUIView()
}
}
プレビュー
AVKit
VideoPlayer
が使えます。
ドキュメントには A view that displays the video content from a player object along with system-supplied playback controls.
とあるんですが、tvOSだとコントロールが出ない感じです。
サンプルコード
import SwiftUI
import AVKit
struct SwiftUIView: View {
let player: AVPlayer?
var body: some View {
VideoPlayer(player: player)
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
return SwiftUIView(player: AVPlayer(url: URL(string: "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8")!))
}
}
プレビュー
#SceneKit
SceneView
が使えます。scnファイルは各自用意してください。
サンプルコード
import SwiftUI
import SceneKit
struct SwiftUIView: View {
let scene: SCNScene?
var body: some View {
SceneView(scene: scene)
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
let scene = SCNScene(named: "Scene.scn")
return SwiftUIView(scene: scene)
}
}
#HomeKit
CameraView
が使えます。
HMCameraSource
が必要になりますが、おそらくSwiftUIプレビューでは用意できないので、各自実機でご確認ください。
サンプルコード
import SwiftUI
import HomeKit
struct SwiftUIView: View {
let cameraSource:HMCameraSource
var body: some View {
CameraView(source: cameraSource)
}
}
WatchKit
NowPlayingView
が使えます。
サンプルコード
import SwiftUI
import WatchKit
struct SwiftUIView: View {
var body: some View {
NowPlayingView()
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView()
}
}
プレビュー
まとめ
つかおう!HomeKit!