SwiftUI は新しいフレームワークであるので、フィーチャー UIKit の幾らかを欠いています。そららフィーチャー UIKit を活用する為には、UIViewControllerRepresentable を使用しなければなりません。
頻出する UIViewControllerRepresentable のコードを蓄積するレポジトリを作成したので、SwiftUI プロジェクトに活用してください。
ぜひお気軽に、作成されたコードをこのレポジトリに追加してください。
- ファイル内容をプレビュー (
QLPreviewController) - iOS 14 フォトピッカー (
PHPickerViewController) - フォトピッカー (
UIImagePickerController) - メールコンポーザー (
MFMailComposeViewController) - テキストメッセージコンポーザー (
MFMessageComposeViewController) - ウェブ表示 (
SFSafariViewController) - ドキュメントピッカー (
UIDocumentPickerViewController) - ビデオプレイヤー (
AVPlayerViewController) - UICloudSharingController (This only works on iPhone; As you need to set a
popoverController.sourceViewfor theUICloudSharingController. Consider creating a storyboard with a single button (that shows theUICloudSharingController) and present the storyboard view from SwiftUI).
または、Swift Package Manager を使用して自身のプロジェクトにコードを挿入することができます。iOS 14のみに対応しているため、Swift Package Manager には PhotoPicker が含まれないことにご注意ください。
- Xcode内からプロジェクトを開く
- 上部のシステムバーの"File"をクリック
- "Swift Packages"をクリック、次いで"Add package dependency…"をクリック
- 以下のURLをペースト:
https://github.com/mszmagic/SwiftUICompatible.git - Version: Up to Next Major
1.0.1 < - "Next"をクリック
- "Done"をクリック。
import SwiftUICompatible
struct ContentView: View {
@State private var showPreview = false
var body: some View {
Button(action: {
self.showPreview = true
}){
Text("表示")
}
.sheet(isPresented: $showPreview, content: {
SafariView(url: URL(string: "https://github.com/mszmagic/SwiftUICompatible")!)
})
}
}