
出于测试目的,我因此创建了一个 *** 场来访问我的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 – Swift Playground iPad摄像头访问全部内容,希望文章能够帮你解决ios – Swift Playground iPad摄像头访问所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)