Ios AVCaptureVideoPreviewLayer看起来是iPhone4大小
我正在使用此代码在iOS 9 Swift应用程序中显示摄像头: 特性:Ios AVCaptureVideoPreviewLayer看起来是iPhone4大小,ios,swift,autolayout,avfoundation,avcapturesession,Ios,Swift,Autolayout,Avfoundation,Avcapturesession,我正在使用此代码在iOS 9 Swift应用程序中显示摄像头: 特性: @IBOutlet weak var previewView: UIView! var session: AVCaptureSession! var input: AVCaptureDeviceInput! var output: AVCaptureStillImageOutput! var previewLayer: AVCaptureVideoPreviewLayer? 委托方法: override func vie
@IBOutlet weak var previewView: UIView!
var session: AVCaptureSession!
var input: AVCaptureDeviceInput!
var output: AVCaptureStillImageOutput!
var previewLayer: AVCaptureVideoPreviewLayer?
委托方法:
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
setupSession()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
// Experimental / debugging
view.layoutSubviews()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// Experimental / debugging
previewLayer!.frame = previewView.bounds
}
摄像方法:
func setupSession() {
session = AVCaptureSession()
session.sessionPreset = AVCaptureSessionPresetPhoto
let camera = frontCamera()
do { input = try AVCaptureDeviceInput(device: camera) } catch { return }
output = AVCaptureStillImageOutput()
output.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]
guard session.canAddInput(input) && session.canAddOutput(output) else { return }
session.addInput(input)
session.addOutput(output)
previewLayer = AVCaptureVideoPreviewLayer(session: session)
previewLayer!.videoGravity = AVLayerVideoGravityResizeAspect
previewLayer!.frame = previewView.bounds
previewLayer!.connection?.videoOrientation = .Portrait
previewView.layer.addSublayer(previewLayer!)
session.startRunning()
}
func frontCamera() -> AVCaptureDevice! {
let devices = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo)
for device in devices {
if (device.position == AVCaptureDevicePosition.Front) {
return device as! AVCaptureDevice
}
}
return nil
}
但是相机显示如下:
而且它看起来相当于iPhone4的显示尺寸
我怎样才能解决这个问题?我已尝试在
viewdilayoutsubviews
中设置框架,但无法正确调整其大小。检查是否为所有支持的设备分配了启动映像。如果没有,则无论您做什么,iOS都将默认为该大小。检查您是否为所有支持的设备分配了启动映像。如果没有,则无论您做什么,iOS都将默认为该大小。您不必重写layoutSubivews或viewDidLayoutSUbviews方法
previewView
被约束为superview
(如果您使用的是自动布局)预览层
的边界与预览视图
边界
相同。在为边界指定帧值或为帧指定绑定值时,请不要混淆AVLayerVideoGravityResizeAspectFill
previewLayer
并使其位于previewView
的中心。使用previewLayer
的位置属性,并将其设置为previewView
的中心
setupSession()
中的任何一个您不必重写layoutSubivews或viewDidLayoutSUbviews方法
previewView
被约束为superview
(如果您使用的是自动布局)预览层
的边界与预览视图
边界
相同。在为边界指定帧值或为帧指定绑定值时,请不要混淆AVLayerVideoGravityResizeAspectFill
previewLayer
并使其位于previewView
的中心。使用previewLayer
的位置属性,并将其设置为previewView
的中心
setupSession()
中的任何一个数字3解决了这个问题,显然最后四个字符“Fill”起了作用。谢谢数字3解决了这个问题,显然最后四个字符“Fill”起了作用。谢谢