SwiftUI调用相机和调用相册其实是一个思路,只用修改一个地方。相册调用请看这里。

我们继续来说相机调用,SwiftUI没办法自己获取相机,所以得依靠一下UIKit,所以头文件如下:

import SwiftUI
import UIKit

然后和调用相册一样,我们创建一个ImagePicker结构体供我们获取系统相册内容(所以如果我们需要在一个软件里调用相册和相机的话,就只用创建一个ImagePacker结构体即可):

struct ImagePicker: UIViewControllerRepresentable {@Environment(\.presentationMode) private var presentationModelet sourceType: UIImagePickerController.SourceTypelet onImagePicked: (UIImage) -> Voidfinal class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {@Binding private var presentationMode: PresentationModeprivate let sourceType: UIImagePickerController.SourceTypeprivate let onImagePicked: (UIImage) -> Voidinit(presentationMode: Binding<PresentationMode>,sourceType: UIImagePickerController.SourceType,onImagePicked: @escaping (UIImage) -> Void) {_presentationMode = presentationModeself.sourceType = sourceTypeself.onImagePicked = onImagePicked}func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {let uiImage = info[UIImagePickerController.InfoKey.originalImage] as! UIImageonImagePicked(uiImage)presentationMode.dismiss()}func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {presentationMode.dismiss()}}func makeCoordinator() -> Coordinator {return Coordinator(presentationMode: presentationMode,sourceType: sourceType,onImagePicked: onImagePicked)}func makeUIViewController(context: UIViewControllerRepresentableContext<ImagePicker>) -> UIImagePickerController {let picker = UIImagePickerController()picker.sourceType = sourceTypepicker.delegate = context.coordinatorreturn picker}func updateUIViewController(_ uiViewController: UIImagePickerController,context: UIViewControllerRepresentableContext<ImagePicker>) {}
}

不一样的地方在调用的时候,在相册调用的时候,sourceType部分我们使用的是.photoLibrary,这里我们只要将其改成.camera就可以啦,如下:

struct ContentView: View {@State private var showCameraPicker = false//这里的image用于放置等会拍摄了的照片@State private var image: UIImage = UIImage()var body: some View {List{Button(action: {showCameraPicker = true}, label: {Text("Camera")})Image(uiImage: image).resizable().aspectRatio(contentMode: .fit)}.sheet(isPresented: $showCameraPicker,content: {ImagePicker(sourceType: .camera) { image inself.image = image}})}
}

这样我们就能调用系统相机了。

SwiftUI——如何调用相机相关推荐

  1. h5 调起相机_Html5在手机端调用相机的方法实现

    input调用设备录像,相机等- HTML5官方文档解释:capture属性用于调用设备的摄像头或麦克风. 当accept="audio/或video/"时capture只有两种值 ...

  2. 安卓imageView加载MYSQL图片_Android调用相机拍摄照片并显示到 ImageView控件中

    在前面的一篇文章中曾介绍过简单的开启相机照相功能,详见 Android简单调用相机Camera功能,实现打开照相功能 ,这一次就会将前面拍摄的照片显示到ImageView中,形成一个完整的效果 看实例 ...

  3. Android调用相机拍摄照片并显示到 ImageView控件中

    在前面的一篇文章中曾介绍过简单的开启相机照相功能,详见  Android简单调用相机Camera功能,实现打开照相功能 ,这一次就会将前面拍摄的照片显示到ImageView中,形成一个完整的效果 看实 ...

  4. Android—显示窗口调用相机与相册

    关于Android点击头像显示窗口调用相机与相册 主要有七步: 点击事件,窗口初始化,点击回调事件,对照片裁剪,裁剪照片保存,声明FileProvider,编写FileProvider的xml文件 1 ...

  5. android 相机和相册,[转载][转载] android调用相机和相册

    很多同学在做客户端的时候,都需要做上传图片,那么上传图片如何上传呢?自己写一个SurfaceView做为展示区,然后用camera类来实现?太out了!直接调用相机拍照获取或者调用相册来取照片才是王道 ...

  6. android 拍照换头像,Android调用相机拍照,裁剪及更换头像功能的实现

    1,点击弹出popwindow,选择相机或者相册 这个就不多说了,在OnclickListener里写弹出的窗口位置和样式. 2,选择拍照功能,调用手机相机. ``` //调用相机 Intent in ...

  7. android intent拍照,Android通过Intent方式调用相机拍照取得图片

    Android通过Intent方式调用相机拍照取得图片 AndroidManifest.XML 权限设置: XML布局设置: 代码: public classMainActivityextendsAp ...

  8. android 7.0 按钮崩溃,Android 7.0调用相机崩溃详解及解决办法

    Android 7.0调用相机崩溃解决办法 错误提示: android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_ ...

  9. 关于input在苹果和安卓手机上调用相机和相册的问题

    最近在项目中遇到一个问题,用H5做手机端页面,用input调用相机,苹果手机无法调出相册,安卓手机可以,针对此情况,对手机做出判断,代码如下: <input  type="file&q ...

最新文章

  1. SpringBoot 实战定时任务 Scheduled
  2. 八. 输入输出(IO)操作6.文件与目录管理
  3. 用户的购物历史都有用吗?看作者如何运用对比学习来筛选相关项
  4. Docker相关的项目
  5. X264码率控制流程分析 (转)
  6. 虚拟化精华问答 | 虚拟化技术分类
  7. 关于c语言编写 单项链表 的创建、插入、修改、删除、显示、退出 的程序案例
  8. nyoj 聪明的kk
  9. java知识点_JAVA面试必会知识点「mysql部分」
  10. Mybatis学习笔记(一) —— mybatis介绍
  11. python 3 json 序列化
  12. ckpt下载 deeplabv3_Ubantu下 用deeplabV3+训练自己的数据集 你可能遇到的所有坑都在这了...
  13. 苹果cms内核H5网页漫画小说系统
  14. 超级搜索术1-信息搜索/资源搜索
  15. js原生往父元素中添加子元素
  16. Mac 利用 Chrome 下载所有网页上的视频
  17. jieba分词关键词抽取
  18. DINO:自监督ViT的新特性
  19. BIMC指出企业发展电子商务的问题
  20. 我所理解的SOLID原则

热门文章

  1. ADI公司的DSP仿真器常见故障/损坏的排查与解决办法(CCES)
  2. coreldraw什么做脚踏车_空中脚踏车怎么做才瘦腿
  3. 植物大战僵尸项目总结
  4. wyse瘦客户机装系统_Wyse 瘦客户机流程更新
  5. python tkinter text tag_标签widg中的Python tkinter textvariable
  6. html header设置语言,Content-Language
  7. [Hack The Boo CTF 2022] writeup
  8. java api 帮助文档 chm 1.5 1.6 中文版英文版.
  9. 南大通用GBase8s 常用SQL语句(240)
  10. nested exception is java.lang.IllegalStateException: refreshAfterWrite requires a LoadingCache异常解决