#iphone #objective-c #image #rotation
#iPhone #objective-c #изображение #вращение
Вопрос:
Я разрабатываю пользовательский интерфейс с помощью IB с большим количеством изображений, а ориентация дизайна по умолчанию — альбомная. Однако мне нужно уменьшить весь вид, чтобы он соответствовал портретному режиму, путем уменьшения до максимально допустимой ширины и сохранения того же соотношения сторон для вида с его внутренними изображениями. Лучший способ представить, чего я хочу достичь, — это представить какую-нибудь пейзажную фотографию. Когда вы поворачиваете его в портретное положение, оно сжимается до максимальной ширины, центрируется по вертикали, но сохраняет то же соотношение сторон. В моем случае я хочу уменьшить представление со всеми его внутренними подвидами.
Во-первых, я вручную изменяю размер рамки просмотра до требуемого размера в viewWillApppear, а также вызываю setAutoresizesSubviews, чтобы изменить размер всех его внутренних представлений. Эти внутренние представления — изображения имеют «подгонку по размеру» и все параметры автоматического изменения размера (для заполнения доступной области при измененном виде). Однако внутренние виды выскакивают из контейнера: некоторые изображения переходят наверх, текстовый вид расширяется до полной высоты портрета. Можно ли установить какой-то «вид-контейнер», а затем сказать: «Изменить размер просмотра до размера X и изменить размер всего вашего, но только внутри области просмотра-контейнера?
Комментарии:
1. почему бы вам не использовать два отдельных изображения для альбомного и портретного режимов ..?
2. Потому что глупо поддерживать разные изображения, если нет изменения соотношения сторон.
Ответ №1:
При проектировании в IB вы должны проверить несколько вещей. Прежде всего, свойства «view container», то есть представление, которое содержит все вложенные представления. Для правильного поведения при вращении этот вид должен быть настроен с правильными свойствами автоматического изменения размера IB, то есть с правильно установленными линиями автоматического изменения размера (пружинами) и линиями границ (структурами). В вашем случае вы хотите, чтобы ваш контейнер точно соответствовал основному виду, поэтому включите «структуры» с четырех сторон и включите «пружины» внутри. Поиграйте с этими значениями и посмотрите на «Пример», отображаемый IB.
Затем вы должны указать этому контейнеру правильное поведение с его вложенными представлениями. Итак, проверьте в IB, что «Авторазмерные подвиды» и режим содержимого, если это необходимо (= «Режим»), имеют желаемую настройку. На этом этапе вы проверяете устройство или симулятор, правильно ли ваш вид вращается и поднимается.
Затем вы должны позаботиться о содержимом этого представления, которое является UIImageView. Это должно быть центрировано, поэтому удалите структуры и авторазмерные, поэтому установите пружины. Затем установите режим содержимого на подгонку по размеру или заливку по вашему желанию.
Эти настройки должны работать. Для более сложных вещей вы должны программно настроить параметры.