Как заставить UIVIew.transform и UIVIew.traitCollection работать вместе? - PullRequest
0 голосов
/ 20 июня 2020

Мне нужно повернуть UIViewController.view вручную, применив transform. Однако после такого поворота в альбомную ориентацию в подпредставлениях traitCollection.verticalSizeClass все еще остается .regular вместо .compact, а traitCollectionDidChange(:) никогда не вызывается.

Можно ли использовать transform при сохранении traitCollection работает правильно?

1 Ответ

0 голосов
/ 20 июня 2020

Применение transform не влияет на traitCollection, так как коллекция признаков привязана к ориентации интерфейса контроллера представления, а ориентация интерфейса привязана к ориентации устройства.

Что вы можете попробовать сделать состоит в том, чтобы применить коллекцию признаков, которую вы хотите, на контроллере дочернего представления viewController после того, как вы примените к нему преобразование, с помощью следующего кода:

let traitCollection = UITraitCollection(traitsFrom: [
    viewController.traitCollection,
    UITraitCollection(verticalSizeClass: .compact)
])
parentViewController.setOverrideTraitCollection(traitCollection, forChild: viewController)

parentViewController вот контроллер представления, у которого есть ваш преобразование контроллера представления в его массив .children.

Обычно это должно работать: parentViewController = viewController.navigationController

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

...