我遇到的主要问题是相机。主要问题是相机在iPhone X,Xs,Xs Max和XR型号上的变焦范围太大。
我的相机是全屏相机,在较小的iPhone上还可以,但是一旦进入上述型号,相机似乎就卡在了最大变焦级别上。我真正想要实现的是与instagram相机工作原理类似的性质。在直到iPhone X系列之前所有型号都全屏显示的地方,然后看似尊重边缘插图,或者如果要全屏显示,我希望它不会像现在这样放大。
我的思维过程是使用这样的东西。
GitHub仓库可以在这里找到-> https://github.com/InderKumarRathore/DeviceGuru
使用此工具或类似工具,我应该能够获得设备的屏幕尺寸。然后,我可以做一些数学运算来确定适合相机视图的屏幕尺寸。
假设DeviceGuru无法正常工作,我将使用类似这样的方法来获取屏幕的宽度和高度。
// Screen width.
public var screenWidth: CGFloat {
return UIScreen.main.bounds.width
}
// Screen height.
public var screenHeight: CGFloat {
return UIScreen.main.bounds.height
}
这是我用来填充相机的代码块。但是,我想根据设备尺寸而不是随便装电话来填充它
import Foundation
import UIKit
import AVFoundation
class PreviewView: UIView {
var videoPreviewLayer: AVCaptureVideoPreviewLayer {
guard let layer = layer as? AVCaptureVideoPreviewLayer else {
fatalError("Expected `AVCaptureVideoPreviewLayer` type for layer. Check PreviewView.layerClass implementation.")
}
layer.videoGravity = AVLayerVideoGravity.resizeAspectFill
layer.connection?.videoOrientation = .portrait
return layer
}
var session: AVCaptureSession? {
get {
return videoPreviewLayer.session
}
set {
videoPreviewLayer.session = newValue
}
}
// MARK: UIView
override class var layerClass: AnyClass {
return AVCaptureVideoPreviewLayer.self
}
}
我希望我的相机看起来像这样
或此
不是这样(我目前的相机是什么样子)
我看过很多问题,没有人有具体的解决方案,所以请不要将其标记为重复,也不要说这只是iPhone X系列的问题。
答案 0 :(得分:1)
首先,您需要使用适当的信息来更新代码,因为这样会使经验不足的其他人获得模糊的想法。
查看图像很明显,您尝试访问的摄像机类型与您拥有的摄像机完全不同。随着iPhone 7+和iPhone X的推出,苹果向用户介绍了许多不同的摄像头设备。所有这些都可以通过AVCaptureDevice.DeviceType访问。
因此,通过查看您想要实现的目标,很明显,您希望在屏幕中拥有更多的视野。可以通过上述给定捕获设备的.builtInWideAngleCamera
属性来访问。将其更改为此将解决您的问题。
欢呼