0
UIImagePickerControllerがビデオモードのとき、AVFoundationがUIImagePickerControllerと同じズームレベルで表示されるのはなぜですか?写真モードでUIImagePickerControllerと同じズームレベルでAVFoundation表示を行うにはどうしたらいいですか?UIImagePickerControllerがビデオモードのとき、AVFoundationがUIImagePickerControllerと同じズームレベルで表示されるのはなぜですか?
import UIKit
import AVFoundation
class ViewController: UIViewController {
var captureSession = AVCaptureSession()
var sessionOutput = AVCapturePhotoOutput()
var sessionOutputSetting = AVCapturePhotoSettings(format: [AVVideoCodecKey: AVVideoCodecJPEG])
var previewLayer = AVCaptureVideoPreviewLayer()
var cameraView: UIView?
override func viewDidLoad() {
cameraView = UIView(frame: view.frame)
view.addSubview(cameraView!)
}
override func viewWillAppear(_ animated: Bool) {
let deviceDiscoverySession = AVCaptureDeviceDiscoverySession(deviceTypes: [.builtInDualCamera, .builtInTelephotoCamera, .builtInWideAngleCamera], mediaType: AVMediaTypeVideo, position: .unspecified)
for device in (deviceDiscoverySession?.devices)! {
if device.position == .back {
do {
let input = try AVCaptureDeviceInput(device: device)
if captureSession.canAddInput(input) {
captureSession.addInput(input)
if captureSession.canAddOutput(sessionOutput) {
captureSession.addOutput(sessionOutput)
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.frame = (cameraView?.bounds)!
previewLayer.videoGravity = AVLayerVideoGravityResizeAspect // AVLayerVideoGravityResizeAspectFill
previewLayer.connection.videoOrientation = .portrait
cameraView?.layer.addSublayer(previewLayer)
}
}
} catch {
print("exception!")
}
}
}
}
override func viewDidAppear(_ animated: Bool) {
captureSession.startRunning()
}
override var shouldAutorotate: Bool {
return false
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
}