(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];

Это будет сохранять статические поля и изменять их ширину.