Проблема с увеличением камеры на iPhone X, iPhone XS и т. Д. - PullRequest
0 голосов
/ 24 января 2019

Основная проблема, с которой я столкнулся, связана с моей камерой.Основная проблема заключается в том, что камера слишком сильно увеличена на моделях iPhone X, Xs, Xs Max и XR.

Моя камера - это полноэкранная камера, которая подходит для небольших iPhone, но как только я получаюДля моделей, упомянутых выше, камера застряла на максимальном уровне масштабирования.Чего я действительно хочу добиться, так это того, как работает камера Instagram.Где это полноэкранный режим на всех моделях вплоть до серии iPhone X, а затем, по-видимому, уважать крайние вставки или если это будет полноэкранный режим, я хочу, чтобы он не был увеличен так, как сейчас.

Мой мыслительный процесс заключается в использовании чего-то подобного.

  1. Определите устройство.Я полагаю, что могу использовать что-то вроде 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
    }
}

Я хочу, чтобы моя камера выглядела примерно так

Instagram

или это

SnapChat

Не это (как выглядит моя текущая камера)

My Camera

Я посмотрел на многие вопросы, и ни у кого нет конкретного решения, поэтому, пожалуйста, не отмечайте его как дубликат, и, пожалуйста, не говорите, что это просто проблема сiPhone X серия.

1 Ответ

0 голосов
/ 26 января 2019

Во-первых, вам нужно обновить свой код, указав подходящую информацию, так как это даст смутное представление любому, у кого меньше опыта.

Глядя на изображения, становится ясно, что тип камеры, к которой вы пытаетесь обратиться, совершенно отличается от того, который у вас есть.С выпуском iPhone 7+ и iPhone X компания Apple представила пользователям множество различных камер.Все это доступно через AVCaptureDevice.DeviceType .

Итак, глядя на то, чего вы хотите достичь, становится ясно, что вам нужно больше поля зрения на экране.Это доступно по свойству .builtInWideAngleCamera указанного выше устройства захвата.Изменение его на это решит вашу проблему.

Приветствия

...