Использование программ классов по размеру
Я (надеюсь) смотрел все соответствующие видеозаписи сессии WWDC2014 и читал документы, поэтому этот вопрос в основном подтверждает мои подозрения, но, пожалуйста, просветите меня.
То, что я хочу сделать, - это анимированные представления, используя Auto Layout. Это само по себе не проблема. Но конечные точки этих анимаций меняются с разными ориентациями. Я думал, что могу использовать классы размера для автоматического перемещения представлений при ротации, но руководство Apple по разработке говорит, что анимации нужно делать программно, и из того, что я могу собрать, классы размера - это только интерфейс-Builder.
Еще одна идея, которую я использовал, - это использовать настраиваемые макеты, такие как верхний/нижний IB, но они кажутся жестко закодированными.
Последнее, что я могу сделать, - это ограничение обновления вручную после прослушивания событий ротации, но это ничего нового, и я чувствую, что классы размера должны использоваться только для статических интерфейсов. Я переоцениваю их цель?
TL;DR: Учитывая две точки A и B, которые могут иметь начало представления (из-за анимации), как я могу перемещать обе точки с помощью классов размера или что-то подобное?
Ответы
Ответ 1
После некоторого дополнительного копирования в документах я наконец нашел что-то полезное. Протокол UIContentContainer
определяет willTransitionToTraitCollection(:withTransitionCoordinator:)
, а первый параметр метода (a UITraitCollection
) содержит классы горизонтального и вертикального размера, а также UIUserInterfaceIdiom
(который может использоваться для определения того, работает ли приложение на iPhone или iPad, хотя классы размера должны использоваться для большинства вещей).
Кроме того, поскольку iOS 8 скрывает строку состояния в альбомном режиме, traitCollectionDidChange(previousTraitCollection:)
- это соответствующий метод, который вызывается после того, как произошло изменение, поэтому значение UIApplication.sharedApplication().statusBarHidden
изменилось при вызове этого метода. Может быть полезно для UIScrollView
contentInset
, например.
Наконец, если вам нужны точные размеры экрана (в точках, конечно, но вышеупомянутая коллекция признаков также знает о плотности пикселей), есть viewWillTransitionToSize(:withTransitionCoordinator:)
.
Надеюсь, это тоже поможет кому-то другому.