Ios 如何展开相机视图以占据整个屏幕(如snapchat)?

Ios 如何展开相机视图以占据整个屏幕(如snapchat)?,ios,swift,iphone,xcode,camera,Ios,Swift,Iphone,Xcode,Camera,我正在尝试制作一个应用程序,它在一个占据整个屏幕的摄像头视图上打开,并且有覆盖摄像头视图的按钮。然而,我的代码现在只提供了占据屏幕中间部分的视图。如何调整以下代码以占据整个视图 import UIKit import AVFoundation class ViewController: UIViewController { @IBOutlet weak var photoPreviewImageView: UIImageView! var session: AVCaptur

我正在尝试制作一个应用程序,它在一个占据整个屏幕的摄像头视图上打开,并且有覆盖摄像头视图的按钮。然而,我的代码现在只提供了占据屏幕中间部分的视图。如何调整以下代码以占据整个视图

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
    }
}


而不是将预览层作为uiimage视图。将其设置为视图,并手动将其调整为整个视图控制器的大小

内部视图将出现在设置预览层框架的位置。更改代码

将边界设置为=self.view.bounds

编辑---

更改从“纵横向拟合纵横向填充”设置的重力

编辑-- 尝试使用=self.view.frame.bounds设置帧

确保预览层的大小能够占据整个视图控制器

确保预览层和视频预览层设置为“纵横比填充”

你可以试试这个 self.view.addsubview(videopreviewlayer)

或者将其设置为适当的层


如果这些都不起作用,请共享您的界面生成器(故事板),也许您的视图继承人权限有问题

不要使用UIImageView。将videoPreviewLayer添加到您的ViewController视图。我将如何实现这一点?我对Swift和Xcode@LeoDabusThis还是新手,没有任何改变,你还有其他建议吗?哦!你设定的重力改变了方向,我试过了,但还是没有改变,还有其他建议吗?我会接受任何我能得到的帮助。谢谢