В iOS 13 установщик для screen
устарел, и там не так много документации, в которой говорится, какой должна быть альтернатива. Я просмотрел другие сообщения о переполнении стека, такие как этот но код не работает в моем приложении. Это функция, которую я использую в моем контроллере представления для настройки внешних дисплеев, которая работает, но предупреждает меня, что установщик для экрана устарел. Он вызывается функцией viewDidLoad()
моего ViewController.
Переменные, инициализированные в моем ViewController
// External Display Support
var secondWindow: UIWindow?
var secondScreenView: UIView?
Функция подключения и отображения на внешний экран.
@objc func setupScreen() {
if UIScreen.screens.count > 1 {
// Find and store the second screen
let secondScreen = UIScreen.screens[1]
// Create a local variable to store the second window using the screen's dimensions
let externalWindow = UIWindow(frame: secondScreen.bounds)
// Windows require a root view controller
let viewController = UIViewController()
// Tell the window which screen to use
externalWindow.screen = secondScreen // This is where the deprecation error is
// Set the dimensions for the view for the external screen so it fills the screen
secondScreenView = UIView(frame: externalWindow.frame)
// Add the view to the window
externalWindow.addSubview(secondScreenView)
// Unhinde the window
externalWindow.isHidden = false
// Configure the View
let hostingController = HostingControllerPresentable(rootView: DefaultPresentationView(appIcon: Bundle.main.icon ?? UIImage()))
viewController.addChild(hostingController)
viewController.view.addSubview(hostingController.view)
hostingController.view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
hostingController.view.topAnchor.constraint(equalTo: (viewController.view.topAnchor)),
hostingController.view.bottomAnchor.constraint(equalTo: (viewController.view.bottomAnchor)),
hostingController.view.leadingAnchor.constraint(equalTo: (viewController.view.leadingAnchor)),
hostingController.view.trailingAnchor.constraint(equalTo: (viewController.view.trailingAnchor)),
])
hostingController.didMove(toParent: externalWindow.rootViewController)
secondWindow = externalWindow
externalWindow.rootViewController = viewController
}
}
Что заменяет этот сеттер и как мне обновить код, чтобы это работало?
screen
соответствующегоUIWindowScene
. Если вы не приняли подход делегата сцены, используйте имеющийся у вас код и игнорируйте предупреждение об устаревании. - person Paulw11   schedule 02.03.2021