📸
SwiftUIでカメラ機能を使う
読んでほしい人
- SwiftUIでカメラ機能を使ってみたい人
- SwiftUIを勉強している人
補足情報
カメラ機能を使うだけで、保存機能はありません!
こちらの動画を参考にしましたが、どうやらコードの書き方が変わっているようです💦
全部で、12回あったかな...
記事の内容
SwiftUIでカメラ機能を使ってみたいと思った。しかしどうやらUIKitの機能も使う必要があるらしい???
チュートリアル動画参考に、CameraView.swift
を作成して、カメラ機能を使うUIKitの構造体を作成する。動画の通りにやっても上手くいかないので、Github Copilotに修正してもらいました。
import SwiftUI
struct CameraView: UIViewControllerRepresentable {
@Binding var image: UIImage
@Binding var showingCamera: Bool
func makeUIViewController(context: UIViewControllerRepresentableContext<CameraView>) -> UIImagePickerController {
let controller = UIImagePickerController()
controller.sourceType = .camera
controller.delegate = context.coordinator
return controller
}
func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext<CameraView>) {
}
func makeCoordinator() -> Coordinator {
return Coordinator(parent: self)
}
class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
let parent: CameraView
init(parent: CameraView) {
self.parent = parent
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
let image = info[.originalImage] as! UIImage
self.parent.image = image
self.parent.showingCamera = false
}
}
}
ボタンを押すと、カメラを起動する設定をする。
import SwiftUI
struct ContentView: View {
@State var image = UIImage()
@State var showingCamera: Bool = false
var body: some View {
VStack {
Image(uiImage: self.image)
.resizable()
.frame(width: 300, height: 150)
Button(action: {
// ボタンが押されたら、showingCameraがtrueになる
showingCamera = true
}, label: {
Text("カメラを起動する")
})
// showingCameraがtrueの時に、sheetが表示される
.sheet(isPresented: $showingCamera, content: {
CameraView(image: $image, showingCamera: $showingCamera)
})
}
}
}
#Preview {
ContentView()
}
カメラを使うときに、接続がうまくいかないことがありましたが、何度かやってたらできました。謎だ...
error code
pair with the device in the xcode devices window, and respond to any pairing prompts on the device.
ネットの記事を参考にするがあまり参考にならなかった???
以前だと、iOSのバージョンを下げればできるエラーだった。
これがスクリーンショット:
最後に
今回は、カメラを使うだけの機能ですがご紹介しました。カメラ機能を作るときにこれを改造して保存をする撮影機能を付けたいですね💦
UIKitの知識も必要なので、SwiftUIではiOS開発はできないので、覚えることが多くて大変ですね。
こちらの記事も参考になりそうです。
Discussion