(Маска авторазмера) гибкая ширина изображения с фиксированной высотой - PullRequest
12 голосов
/ 02 марта 2011

Я поигрался с созданием интерфейса iPhone, используя только код и не используя IB.

Теперь я столкнулся со следующей проблемой:

Как настроить ширину изображения в зависимости от основного вида, на котором оно расположено, и обеспечить для него поле, например, 50 пикселей с обеих сторон. (он также должен работать с вращением, поэтому ширина должна быть гибкой).

Я попытался установить размер с помощью frame.size.width - 50, например, но это не работает, когда экран вращается. Еще я попробовал использовать маски авторазмера, но я не совсем понимаю, как это работает.

Нужно ли еще устанавливать рамку для изображения, или это полностью отменяется масками авторазмера? И если он отменен, как я могу придать изображению фиксированную высоту и гибкую ширину?

Книга, которую я использую (расширенное программирование на iOS4), не очень ясна в этом вопросе, и большинство примеров, которые я нахожу в сети, относятся к построителю интерфейса.

Спасибо за ваше время.

С уважением, Jasper

Ответы [ 2 ]

50 голосов
/ 02 марта 2011

Горизонтально:

  • Изменение размера с фиксированными полями влево / вправо: UIViewAutoresizingFlexibleWidth
  • Сохранить размер и то же расстояние слева: UIViewAutoresizingFlexibleRightMargin
  • Сохраняйте размер, оставайтесь в центре: UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
  • Сохранить размер и то же расстояние справа: UIViewAutoresizingFlexibleLeftMargin

Вертикально:

  • Изменение размера с сохранением фиксированных верхних / нижних полей: UIViewAutoresizingFlexibleHeight
  • Сохраняйте размер и одинаковое расстояние от вершины: UIViewAutoresizingFlexibleBottomMargin
  • Сохраняйте размер, оставайтесь в центре: UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin
  • Сохраняйте размер и одинаковое расстояние от дна: UIViewAutoresizingFlexibleTopMargin

Объедините один из первого раздела с одним из второго с |. Например, чтобы изменить размер по горизонтали и сохранить одинаковый размер и расстояние от вершины по вертикали, вы должны использовать UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin.

Вы можете использовать другие комбинации, чтобы сделать некоторые более сложные вещи, но это основы.

0 голосов
/ 02 марта 2011

Вы, вероятно, хотите это:

[myImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

Это позволит сохранить поля статичными и изменить размер ширины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...