ios – Swift Playground iPad摄像头访问

ios – Swift Playground iPad摄像头访问,第1张

概述在针对iPad的 Swift Playground应用程序的最新更新说明中,我看到可以通过 *** 场访问摄像机. 出于测试目的,我因此创建了一个 *** 场来访问我的iPad后置摄像头. 作为参考,我使用了这些来源: > https://github.com/codepath/ios_guides/wiki/Creating-a-Custom-Camera-View > https://github.com/f 在针对iPad的 Swift Playground应用程序的最新更新说明中,我看到可以通过 *** 场访问摄像机.
出于测试目的,我因此创建了一个 *** 场来访问我的iPad后置摄像头.
作为参考,我使用了这些来源:

> https://github.com/codepath/ios_guides/wiki/Creating-a-Custom-Camera-View
> https://github.com/francip/swift-playground-camera/blob/master/Camera.playground/Contents.swift

这是我的代码:

import UIKitimport AVFoundationimport PlaygroundSupportclass MainVIEwController : UIVIEwController {    private var _session: AVCaptureSession?    private var _captureinput: AVCaptureinput?    private var _stillimageOutput: AVCaptureStillimageOutput?    private var _frontCamera: AVCaptureDevice?    private var _prevIEwVIEw: UIVIEw?    private var _prevIEwLayer: AVCaptureVIDeoPrevIEwLayer?public overrIDe func loadVIEw() {    print("loadVIEw()")    _prevIEwVIEw = UIVIEw()    guard let vIEw = _prevIEwVIEw else {        printError(errMsg: "VIEw Could not be created!")        return    }    vIEw.backgroundcolor = UIcolor.brown    self.vIEw = vIEw}public overrIDe func vIEwWillAppear(_ animated: Bool) {    super.vIEwWillAppear(animated)    // Create a capture session    _session = AVCaptureSession()    guard let session = _session  else {        printError(errMsg: "Session is empty!")        return    }    session.beginConfiguration()    session.sessionPreset = AVCaptureSession.Preset.photo    // Get access to front camera    _frontCamera = AVCaptureDevice.default(for: AVMediaType.vIDeo)    guard let frontCamera = _frontCamera        else {            printError(errMsg: "Front camera not accessible!")            return    }    do{        _captureinput = try AVCaptureDeviceinput(device: frontCamera)    } catch let err as NSError {        printError(errMsg: err.localizedDescription)        return    }    // Add input to session    guard let captureinput = _captureinput else {        printError(errMsg: "Capture input not available!")        return    }    if session.canAddinput(captureinput){        session.addinput(captureinput)    }    // Configurw the image output    _stillimageOutput = AVCaptureStillimageOutput()    guard let sillimageOutput = _stillimageOutput else {        printError(errMsg: "Image output not available!")        return    }    sillimageOutput.outputSettings = [AVVIDeoCodecKey: AVVIDeoCodecJPEG]    if session.canAddOutput(sillimageOutput) {        session.addOutput(sillimageOutput)    }    session.commitConfiguration()    // Add vIDeo prevIEw layer    _prevIEwLayer = AVCaptureVIDeoPrevIEwLayer(session: session)    guard let prevIEwLayer = _prevIEwLayer else {        printError(errMsg: "PrevIEw layer not available!")        return    }    prevIEwLayer.vIDeoGravity = AVLayerVIDeoGravity.resizeAspect    prevIEwLayer.connection?.vIDeoOrIEntation = AVCaptureVIDeoOrIEntation.portrait    guard let vIEw = _prevIEwVIEw else {        printError(errMsg: "VIEw not available!")        return    }    vIEw.layer.addSublayer(prevIEwLayer)    vIEw.layer.borderWIDth = 5    // Start the capture session    session.startRunning()}public overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()}public overrIDe func vIEwDIDAppear(_ animated: Bool) {    super.vIEwDIDAppear(animated)    guard let prevIEwLayer = _prevIEwLayer else {        printError(errMsg: "PrevIEw layer not available!")        return    }    guard let prevIEwVIEw = _prevIEwVIEw else {        printError(errMsg: "VIEw not available!")        return    }    print(prevIEwVIEw.bounds)    prevIEwLayer.frame = prevIEwVIEw.bounds}private func printError(errMsg: String) {    print("[Error]: " + errMsg)}}PlaygroundPage.current.liveVIEw = MainVIEwController()

请忽略会话的私有变量等.我知道我可以/应该使它们成为本地方法.

我唯一看到的是视图的棕色背景.


当iOS第一次运行应用程序时,我问我Playgrounds应用程序是否应该访问我接受的相机.在设置中,我还可以看到应用程序可以访问相机.

iOS版本:10.3.3
游乐场应用程序:1.6.1

解决方法 看起来它只能在iOS 11上运行.我在iPad上用iOS 10.3检查了你的代码,视频预览是空的.在普通应用程序中运行相同的代码.在另一台运行iOS 11的平板电脑上,相同的代码就像魅力一样. 总结

以上是内存溢出为你收集整理的ios – Swift Playground iPad摄像头访问全部内容,希望文章能够帮你解决ios – Swift Playground iPad摄像头访问所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1032290.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存