Доступ к новому свойству UITraitCollection в Mac Catalyst - PullRequest
0 голосов
/ 27 октября 2019

Когда приложение iOS запускается под Mac Catalyst, появляется новое свойство UITraitCollection, связанное с состоянием «неактивный внешний вид». Но эта черта не является общедоступной, и я ищу правильный способ отреагировать на этот шанс.

Чтобы прояснить это, полезно создать iOS Master / Detail проект с использованием Xcode 11 и включить Mac,Затем в методе SceneDelegate willConnectTo добавьте строку:

splitViewController.primaryBackgroundStyle = .sidebar

, а в методе MasterViewController cellForRowAt добавьте строку:

cell.accessoryType = .detailButton

Теперь запустите приложение на Mac. В то время как приложение имеет фокус, обратите внимание на полупрозрачную мастер-панель разделенного вида и обратите внимание, что кнопки подробностей в ячейках синие (нажмите + пару раз, чтобы добавить несколько строк).

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

Когда приложение получает или теряет фокус, я обнаружил, что traitCollectionDidChangeвызывается метод контроллеров представлений и вызывается метод представлений tintDidChange.

Проблема в том, что в UITraitCollection нет общедоступного API, связанного с изменяемой характеристикой. Если вы установите точку останова в traitCollectionDidChange и напечатаете значение previousTraitCollection или self.traitCollection, то, похоже, ничего не изменится.

Но если вы проверите детали previousTraitCollection вПеременная отладчика просмотра, вы можете увидеть частный словарь с именем _clientDefinedTraits. Этот словарь содержит одну пару ключ / значение. Ключ _UITraitNameHasInactiveAppearance с истинным / ложным значением.

Ничего подобного не происходит при запуске под iOS, только под macOS.

Моя цель - иметь возможность реагировать на это "неактивное"изменение черты внешнего вида, но я бы предпочел не копаться в этих личных данных.

Есть ли что-то, чего мне не хватает для получения этой черты "неактивного внешнего вида"? В идеале это было бы по принципу hasDifferentColorAppearance.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...