У меня есть экран в моем приложении с несколькими контроллерами детского вида. При меньших размерах экрана, таких как iPhone, контроллеры представлений размещаются на одном уровне друг с другом. На размерах экрана iPad один из контроллеров просмотра плавает поверх другого.Как проверить текущий класс размера для экрана из встроенного контроллера дочернего представления?
Я хочу сделать так, чтобы мой контроллер просмотра, который иногда плавает, имеет только радиус угла, когда он плавает. Поэтому я рассмотрел переопределение метода, такого как viewDidLoad
или overrideTraitCollection(forChildViewController:)
, в контроллере моего дочернего представления, чтобы установить радиус угла его представления в зависимости от того, является ли его класс размера wRegular, hRegular, который предназначен для iPads в портретном или альбомном виде.
Однако контроллер дочернего представления, похоже, не имеет значений такого же размера, что и контроллер корневого представления, и перемещение вверх по иерархии parentViewController
, похоже, не приводит меня к контроллеру представления, который имеет эти значения ,
Как получить доступ к текущему классу размера верхней части иерархии представлений из контроллера дочернего представления?
Редактировать: Я пробовал существующий ответ с использованием UIScreen, и он отлично работает, когда мое приложение является единственным видимым приложением. Однако это приводит к неправильному поведению, когда приложение запускается в режиме разделения экрана - он всегда возвращает Regular/Regular, даже если приложение является узким. Есть ли решение, которое предполагает получение класса размера только для той части экрана, в которой находится мое приложение?
«Как получить доступ к текущему классу размера верхней части иерархии представлений с контроллера дочернего представления?» Спросите у экрана, что это за класс. – matt
Вот и все. Благодаря! –
Вот загружаемый примерный проект, который показывает вам, как изменить среду признаков для ребенка. https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch06p321overrideTraitCollection/OverrideTraitCollection/ViewController.swift Пример делает именно то, что вы описываете: ребенок ведет себя по-разному, когда коллекция признаков различна (настроено в раскадровке) – matt