Вращение UIView; Как предотвратить отсечение во время вращения?

Допустим, у меня есть UIView, который в своей стандартной конфигурации охватывает всю ширину и высоту своего контейнера. Для целей этого вопроса допустим, что его размеры 320x400. Предположим, что это представление содержит содержимое, которое может быть (и обычно бывает) больше, чем его стандартные размеры (поэтому содержимое прокручивается).

Теперь, если у этого UIView есть связанный с ним UIRotationGestureRecognizer, который используется для поворота вида с использованием его свойства transform, как я могу гарантировать, что его размер/рисуемая область всегда достаточно велики для его текущей ориентации (под «достаточно большим» я подразумеваю, что отображаемое содержимое всегда должно выходить за исходные границы и не обрезаться до достижения края исходных границ)? Например, если я поверну его на 90 градусов, представление должно понимать, что его «ширина» теперь может потреблять до 400 пикселей, а его высота ограничена 320 пикселями.

Обратите внимание, что я не хочу масштабировать вид как часть операции вращения. Любое «дополнительное» пространство, которое становится доступным из-за текущего поворота, должно использоваться для отображения дополнительного контента, если он доступен, а не просто для отображения того же контента с более высоким уровнем масштабирования.


person aroth    schedule 25.12.2011    source источник


Ответы (1)


Вы не хотите, чтобы при вращении появлялись пустые места. Решение состоит в том, чтобы иметь подпредставление, содержащее фон, достаточно большой, чтобы покрыть все окно просмотра во время вращения. Я бы сказал, что представление 400 на 400 должно подойти. Это представление может быть родительским для вашего содержимого, но это добавит вам проблем с позиционированием.

Проще было бы добавить подвид в текущий вид. Поместите (большой) фон в это подпредставление, убедитесь, что это представление находится внизу стека представлений, а в текущем представлении установите clipsToBounds=NO.

Помните, однако, что отключение обрезки может повлиять на производительность, особенно если ваша иерархия представлений становится сложной.

person Jeroen Leenarts    schedule 05.06.2012