Основная проблема, с которой я столкнулся, связана с моей камерой.Основная проблема заключается в том, что камера слишком сильно увеличена на моделях iPhone X, Xs, Xs Max и XR.
Моя камера - это полноэкранная камера, которая подходит для небольших iPhone, но как только я получаюДля моделей, упомянутых выше, камера застряла на максимальном уровне масштабирования.Чего я действительно хочу добиться, так это того, как работает камера Instagram.Где это полноэкранный режим на всех моделях вплоть до серии iPhone X, а затем, по-видимому, уважать крайние вставки или если это будет полноэкранный режим, я хочу, чтобы он не был увеличен так, как сейчас.
Мой мыслительный процесс заключается в использовании чего-то подобного.
- Определите устройство.Я полагаю, что могу использовать что-то вроде Device Guru, которое можно найти здесь, чтобы определить тип устройства.
GitHub repo можно найти здесь -> 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 серия.