LoginSignup
30
25

More than 3 years have passed since last update.

SwiftUI 他のフレームワークを組み合わせると使えるView

Last updated at Posted at 2020-11-14

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

プレビュー

スクリーンショット 2020-11-14 11.34.52.png

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

プレビュー

スクリーンショット 2020-11-14 11.36.21.png

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()
    }
}

プレビュー

スクリーンショット 2020-11-14 11.54.47.png

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()
    }
}

プレビュー

スクリーンショット 2020-11-14 11.46.41.png

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")!))
    }
}

プレビュー

スクリーンショット 2020-11-14 11.34.07.png

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

プレビュー

スクリーンショット 2020-11-14 11.32.49.png

HomeKit

CameraViewが使えます。
HMCameraSource が必要になりますが、おそらくSwiftUIプレビューでは用意できないので、各自実機でご確認ください。

サンプルコード

import SwiftUI
import HomeKit

struct SwiftUIView: View {
    let cameraSource:HMCameraSource
    var body: some View {
        CameraView(source: cameraSource)
    }
}

画像

IMG_1F757207E2D1-1.jpeg

WatchKit

NowPlayingViewが使えます。

サンプルコード

import SwiftUI
import WatchKit

struct SwiftUIView: View {
    var body: some View {
        NowPlayingView()
    }
}

struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView()
    }
}

プレビュー

スクリーンショット 2020-11-14 11.39.10.png

まとめ

つかおう!HomeKit!

30
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
25