【发布时间】:2019-11-24 01:07:26
【问题描述】:
我正在尝试制作一个在占据整个屏幕的相机视图上打开的应用程序,并具有覆盖相机视图的按钮。但是,我的代码现在只为我提供了一个占据屏幕中间部分的视图。如何调整以下代码以占据整个视图?
import UIKit
import AVFoundation
class ViewController: UIViewController {
@IBOutlet weak var photoPreviewImageView: UIImageView!
var session: AVCaptureSession?
var stillImageOutput: AVCaptureStillImageOutput?
var videoPreviewLayer: AVCaptureVideoPreviewLayer?
override func viewDidLoad() {
super.viewDidLoad()
session = AVCaptureSession()
session!.sessionPreset = AVCaptureSession.Preset.photo
let backCamera = AVCaptureDevice.default(for: AVMediaType.video)
var error: NSError?
var input: AVCaptureDeviceInput!
do {
input = try AVCaptureDeviceInput(device: backCamera!)
} catch let error1 as NSError {
error = error1
input = nil
print(error!.localizedDescription)
}
if error == nil && session!.canAddInput(input) {
session!.addInput(input)
stillImageOutput = AVCaptureStillImageOutput()
stillImageOutput?.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]
if session!.canAddOutput(stillImageOutput!) {
session!.addOutput(stillImageOutput!)
videoPreviewLayer = AVCaptureVideoPreviewLayer(session: session!)
videoPreviewLayer!.videoGravity = AVLayerVideoGravity.resizeAspect
videoPreviewLayer!.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
photoPreviewImageView.layer.addSublayer(videoPreviewLayer!)
session!.startRunning()
}
}
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
videoPreviewLayer!.frame = photoPreviewImageView.bounds
}
}
【问题讨论】:
-
不要使用 UIImageView。将 videoPreviewLayer 添加到您的 ViewController 视图中。
-
我将如何实现这个?我还是 Swift 和 Xcode 的新手@LeoDabus
标签: ios swift iphone xcode camera