SwiftUI 在不使用 UIViewRepresentable 的情况下获取相机帧(教程含源码)

本文介绍了如何在SwiftUI中不依赖UIViewRepresentable直接获取相机帧,简化了iOS开发过程,适用于初学者。通过创建CameraService类,使用AVFoundation框架,实现了相机帧的捕获和处理,并在SwiftUI视图中展示。同时,文章提供了源码供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我之前的博客中,我写过如何使用 UIViewRepresentable 方法在 SwiftUI 中获取相机帧,但是要使用这种方法,我们需要重新访问苹果的 UIKit 框架,对于刚开始学习使用 SwiftUI 进行 iOS 开发的人来说,可能会遇到一些困难在理解这种方法时。所以今天我将与大家分享如何使用纯 SwiftUI 获取相机帧。

我相信与 UIViewRepresentable 方法相比,这个获取过程更容易并且处理的复杂性更低,而且代码更易于维护。

首先让我们创建我们的 CameraService 类

class CameraService: NSObject, ObservableObject {
    
    @Published var cameraFrame: CGImage?
    private let captureSession = AVCaptureSession()
    private let videoOutput = AVCaptureVideoDataOutput()
    private let captureQueue = DispatchQueue.init(label: "Camera.service", qos: .userInitiated)
    override init() {
        super.init()
        addCameraInput()
        addVideoOutput()
        startSession()
    }
} 
</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值