Можно ли изменить разрешение AirPlay UIScreen?

Я работаю с AirPlay, и в настоящее время я могу запустить контроллер представления на внешнем экране. Тем не менее, я также хотел бы настроить разрешение потока и соотношение сторон. У меня внешний монитор 1920x1080 (16:9), но я бы хотел сохранить соотношение сторон 4:3 для iPad (чтобы графический интерфейс выглядел так же, как на iPad) с более низким разрешением, чем 1920x1080 (чтобы повысить производительность Посмотреть). Это возможно?

Мой код в настоящее время выглядит примерно так (без ненужных вещей):

import UIKit

class ViewController: UIViewController {

    private var externalWindow: UIWindow?

    private func setupScreenNotifications() {
        let center = NotificationCenter.default

        center.addObserver(self, selector: #selector(ViewController.externalScreenDidConnect), name: NSNotification.Name.UIScreenDidConnect, object: nil)
        center.addObserver(self, selector: #selector(ViewController.externalScreenDidDisconnect), name: NSNotification.Name.UIScreenDidDisconnect, object: nil)
    }

    func externalScreenDidConnect(notification: NSNotification) {
        guard let screen = notification.object as? UIScreen else {
            return
        }

        setupExternalScreen(screen: screen)
    }

    func externalScreenDidDisconnect(notification: NSNotification) {
        guard let _ = notification.object as? UIScreen else {
            return
        }

        teardownExternalScreen()
    }

    private func setupExternalScreen(screen: UIScreen) {
        guard externalWindow == nil,
            let vc = self.storyboard?.instantiateViewController(withIdentifier: "procedureViewController") as? ProcedureViewController else {
                return
        }

        externalWindow = UIWindow(frame: CGRect(x: 0, y: 0, width: 1024, height: 768))
        externalWindow!.rootViewController = vc
        externalWindow!.screen = screen
        externalWindow!.isHidden = false
    }

    private func teardownExternalScreen() {
        guard let ew = externalWindow else { return }

        ew.isHidden = true
        externalWindow = nil
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        setupScreenNotifications()
        if UIScreen.screens.count > 1 {
            setupExternalScreen(screen: UIScreen.screens[1])
        }
    }
}

Единственный доступный UIScreenMode <UIScreenMode: 0x1780386e0; size = 1920.000000 x 1080.000000>так что не повезло. Можно ли принудительно изменить разрешение другим способом? Я хотел бы установить его явно 1024x768.

Спасибо,
Даниил

0 ответов

Другие вопросы по тегам