Отзывчивый шаблон дизайна для ориентации ipad

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

Это изображение даст четкую картину. Responsive Layout

Из рисунка (2) находится раздел, куда должно идти изображение, (4) описание, (5) связанная с этим тема (6) адрес. (3) - это контейнерный блок, который должен меняться в зависимости от 4, 5 и 6 и (1) - это прокрутка, которая должна содержать свое содержимое, а также размер содержимого, правильно настроенный на основе 2 и 3.

Можно ли достичь этого сценария исключительно с помощью Autolayout или использовать пользовательский UICollectionViewLayout, это лучший вариант

Оцените любые предложения

Ответ 1

Решение, которое я вижу, заключается в изменении ограничений AutoLayout, когда устройство вращается, и вы делаете это программно: вы можете обнаружить изменение ориентации в этом методе: viewDidLayoutSubviews вашего контроллера вида.

и для ограничения AutoLayout, чтобы упростить работу, вы можете использовать стороннюю структуру PureLayout, вот ее репозиторий github: https://github.com/smileyborg/PureLayout

Ответ 2

Немного устаревший, но все же актуальный...

Вы можете сделать это, представив родительский контроллер представлений, который отрегулирует коллекцию признаков вашего контроллера вида.

Вы можете начинать с таких проектов, как AdaptivePhotosAnAdaptiveApplication или, более конкретно, класс AAPLTraitOverrideViewController и применять классы размеров, чтобы различать между типами и позициями ориентации Portrait and Landscape orientation.

С небольшой настройкой viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator вы можете достичь своей цели.

Здесь вы можете найти код: https://github.com/ios8/AdaptivePhotosAnAdaptiveApplication/blob/master/AdaptivePhotos/AAPLTraitOverrideViewController.m