Работая над совершенно новым переработанным обновлением для Viso, мне нужен был способ обнаружения изменения разрешения экрана или изменения конфигурации монитора пользователем (подключение нового основного монитора или возврат из многоэкранной настройки обратно в свой макбук). Затем я использовал это, чтобы изменить размер изображений, которые были открыты в данный момент.

Процесс довольно прост. Событие, которое вы должны отслеживать, — это событие NSApplication.didChangeScreenParametersNotification.

Во-первых, мы создаем переменную для хранения этого события.

Затем мы прослушиваем его с помощью метода onReceive(_:perform:) в SwiftUI. Вы можете добавить это в любое представление SwiftUI, которое вы хотите прослушивать.

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

Дайте мне знать, если это было полезно!