(Autoresizing mask) гибкая ширина изображения с фиксированной высотой
Я играл с iPhone-интерфейсом, используя только код и не используя IB.
Теперь я столкнулся со следующей проблемой:
Как настроить изображение на ширину, основанную на основном представлении, на котором оно расположено, и позволить ему иметь край, например, 50 пикселей с обеих сторон. (он также должен работать с поворотом, поэтому ширина должна быть гибкой).
Я попытался установить размер с помощью frame.size.width - 50, например, но это не работает, когда экран вращается. Еще одна вещь, которую я пробовал, - это использование авторезистирующих масок, но я не совсем понимаю, как это работает.
Нужно ли еще устанавливать фрейм для изображения или это полностью отменено масками авторезистирования? И если он отклонил, как я могу придать изображению фиксированную высоту и гибкую ширину?
Книга, которую я использую (расширенное программирование на iOS4), не очень понятна в этом вопросе, и большинство примеров, которые я нахожу в сети, предназначены для конструктора интерфейса.
Спасибо за ваше время.
С уважением,
Джаспер
Ответы
Ответ 1
Горизонтально:
- Изменение размера фиксированного поля слева/справа:
UIViewAutoresizingFlexibleWidth
- Держите размер и то же расстояние слева:
UIViewAutoresizingFlexibleRightMargin
- Сохранить размер, оставаться в центре:
UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
- Сохраняйте размер и то же расстояние справа:
UIViewAutoresizingFlexibleLeftMargin
Вертикально:
- Изменение размера фиксированных полей верхнего и нижнего пределов:
UIViewAutoresizingFlexibleHeight
- Держите размер и то же расстояние сверху:
UIViewAutoresizingFlexibleBottomMargin
- Сохранить размер, оставаться в центре:
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin
- Держите размер и то же расстояние снизу:
UIViewAutoresizingFlexibleTopMargin
Объедините один из первого раздела с одним из второго с помощью |
. Например, чтобы изменить размер по горизонтали и сохранить тот же размер и расстояние от вершины по вертикали, вы должны использовать UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin
.
Вы можете использовать другие комбинации, чтобы сделать несколько более сложных вещей, но это основы.
Ответ 2
Вероятно, вы хотите:
[myImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
Это будет сохранять статические поля и изменять их ширину.