SwiftUI——如何调用相机
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——如何调用相机相关推荐
- h5 调起相机_Html5在手机端调用相机的方法实现
input调用设备录像,相机等- HTML5官方文档解释:capture属性用于调用设备的摄像头或麦克风. 当accept="audio/或video/"时capture只有两种值 ...
- 安卓imageView加载MYSQL图片_Android调用相机拍摄照片并显示到 ImageView控件中
在前面的一篇文章中曾介绍过简单的开启相机照相功能,详见 Android简单调用相机Camera功能,实现打开照相功能 ,这一次就会将前面拍摄的照片显示到ImageView中,形成一个完整的效果 看实例 ...
- Android调用相机拍摄照片并显示到 ImageView控件中
在前面的一篇文章中曾介绍过简单的开启相机照相功能,详见 Android简单调用相机Camera功能,实现打开照相功能 ,这一次就会将前面拍摄的照片显示到ImageView中,形成一个完整的效果 看实 ...
- Android—显示窗口调用相机与相册
关于Android点击头像显示窗口调用相机与相册 主要有七步: 点击事件,窗口初始化,点击回调事件,对照片裁剪,裁剪照片保存,声明FileProvider,编写FileProvider的xml文件 1 ...
- android 相机和相册,[转载][转载] android调用相机和相册
很多同学在做客户端的时候,都需要做上传图片,那么上传图片如何上传呢?自己写一个SurfaceView做为展示区,然后用camera类来实现?太out了!直接调用相机拍照获取或者调用相册来取照片才是王道 ...
- android 拍照换头像,Android调用相机拍照,裁剪及更换头像功能的实现
1,点击弹出popwindow,选择相机或者相册 这个就不多说了,在OnclickListener里写弹出的窗口位置和样式. 2,选择拍照功能,调用手机相机. ``` //调用相机 Intent in ...
- android intent拍照,Android通过Intent方式调用相机拍照取得图片
Android通过Intent方式调用相机拍照取得图片 AndroidManifest.XML 权限设置: XML布局设置: 代码: public classMainActivityextendsAp ...
- android 7.0 按钮崩溃,Android 7.0调用相机崩溃详解及解决办法
Android 7.0调用相机崩溃解决办法 错误提示: android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_ ...
- 关于input在苹果和安卓手机上调用相机和相册的问题
最近在项目中遇到一个问题,用H5做手机端页面,用input调用相机,苹果手机无法调出相册,安卓手机可以,针对此情况,对手机做出判断,代码如下: <input type="file&q ...
最新文章
- SpringBoot 实战定时任务 Scheduled
- 八. 输入输出(IO)操作6.文件与目录管理
- 用户的购物历史都有用吗?看作者如何运用对比学习来筛选相关项
- Docker相关的项目
- X264码率控制流程分析 (转)
- 虚拟化精华问答 | 虚拟化技术分类
- 关于c语言编写 单项链表 的创建、插入、修改、删除、显示、退出 的程序案例
- nyoj 聪明的kk
- java知识点_JAVA面试必会知识点「mysql部分」
- Mybatis学习笔记(一) —— mybatis介绍
- python 3 json 序列化
- ckpt下载 deeplabv3_Ubantu下 用deeplabV3+训练自己的数据集 你可能遇到的所有坑都在这了...
- 苹果cms内核H5网页漫画小说系统
- 超级搜索术1-信息搜索/资源搜索
- js原生往父元素中添加子元素
- Mac 利用 Chrome 下载所有网页上的视频
- jieba分词关键词抽取
- DINO:自监督ViT的新特性
- BIMC指出企业发展电子商务的问题
- 我所理解的SOLID原则
热门文章
- ADI公司的DSP仿真器常见故障/损坏的排查与解决办法(CCES)
- coreldraw什么做脚踏车_空中脚踏车怎么做才瘦腿
- 植物大战僵尸项目总结
- wyse瘦客户机装系统_Wyse 瘦客户机流程更新
- python tkinter text tag_标签widg中的Python tkinter textvariable
- html header设置语言,Content-Language
- [Hack The Boo CTF 2022] writeup
- java api 帮助文档 chm 1.5 1.6 中文版英文版.
- 南大通用GBase8s 常用SQL语句(240)
- nested exception is java.lang.IllegalStateException: refreshAfterWrite requires a LoadingCache异常解决