gpt4 book ai didi

ios - 为什么我的预览图层没有覆盖整个 View ?

转载 作者:行者123 更新时间:2023-11-30 12:16:13 25 4
gpt4 key购买 nike

我正在使用 AVFoundation 相机制作 iPhone 应用程序,但相机无法正确缩放。

我想我已经做了很多工作来使其大小相同,我将视频重力更改为ResizeAspectFill,并将previewlayer.frame.size更改为self.layer.frame.size。

为什么我的预览图层没有延伸到整个 View ?是我输入错误还是只是忘记了需要输入的内容?谢谢!

图片:http://imgur.com/O713SoE

代码:

import AVFoundation
import UIKit
import QuartzCore

class View1: UIViewController {

let captureSession = AVCaptureSession()
var previewLayer: CALayer!
var captureDevice: AVCaptureDevice!

@IBOutlet weak var photoButton: UIButton!
@IBOutlet weak var cameraView: UIView!

override func viewDidLoad() {
super.viewDidLoad()

photoButton.layer.zPosition = 1
}

@IBAction func photoButtonpressed(_ sender: UIButton) {
let button = sender as UIButton
if (button.tag == 1){
print("Photobutton clicked")
}
}

func prepareCamera(){

captureSession.sessionPreset = AVCaptureSessionPreset1920x1080

if let availableDevices = AVCaptureDeviceDiscoverySession(deviceTypes: [.builtInWideAngleCamera],
mediaType: AVMediaTypeVideo,
position: .back).devices {

captureDevice = availableDevices.first

beginSession()
}
}

func beginSession(){
do {
let captureDeviceInput = try AVCaptureDeviceInput(device: captureDevice)
captureSession.addInput(captureDeviceInput)
} catch {
print(error.localizedDescription)
}

if let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession){

self.previewLayer = previewLayer

self.view.layer.addSublayer(self.previewLayer)

self.previewLayer.frame = self.view.layer.frame
self.previewLayer.bounds = self.view.bounds
self.previewLayer.contentsGravity = AVLayerVideoGravityResizeAspectFill

captureSession.startRunning()

let dataOutput = AVCaptureVideoDataOutput()

dataOutput.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSString): NSNumber(value: kCVPixelFormatType_32BGRA)]

dataOutput.alwaysDiscardsLateVideoFrames = true

if captureSession.canAddOutput(dataOutput) {
captureSession.addOutput(dataOutput)
captureSession.commitConfiguration()
}
}
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
prepareCamera()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}

最佳答案

我复制您的代码并在 iOS 10.1.1iPhone6XCode 8.2.1 上运行,它可以工作。 Screen shot of your workable code

如何加载View1?以编程方式?在 Storyboard中启动? View1view 的大小可能与您的设备屏幕不同。

关于ios - 为什么我的预览图层没有覆盖整个 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com