【问题标题】:How do I expand the view of the camera to take up the entire screen (like snapchat)?如何扩展相机的视图以占据整个屏幕(如 snapchat)?
【发布时间】: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
    }
}

【问题讨论】:

标签: ios swift iphone xcode camera


【解决方案1】:

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

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

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

编辑——-

改变你设置的重力从宽高比填充

编辑—— 尝试使用 = self.view.frame.bounds 设置框架

确保你的预览层大小可以占据整个视图控制器

确保您的预览层和视频预览层设置为方面填充

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

或者设置到合适的层

如果这些都不起作用,请分享您的界面构建器(故事板),您的视图层次结构可能存在问题

【讨论】:

  • 这并没有改变什么,你有什么其他建议吗?
  • 哦!您设置的重力将其更改为方面填充
  • 我试过了,仍然没有变化,还有其他建议吗?我会尽我所能得到帮助。谢谢!
猜你喜欢
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多