Bezdepbonusu7Программирование: статьи и ответы

Вопрос

IPhone - UIButton с изображением без изменения размера внутри

Автор вопроса: OliverОтветов: 2

У меня есть UIButton с "настраиваемым" типом со свойством "изображение", которое получает изображение из ресурсов. Изображение меньше кнопки. Я не могу добиться в Interface Builder сохранения исходного размера изображения при масштабировании размеров кнопки, как я хочу.

Как я могу иметь кнопку любого размера в IB, сохраняя исходный размер изображения, выравнивая его по центру, слева направо, внизу, а не на кнопке...? Разве это невозможно без установки UIImageView?

  • Разместите код. Вы говорите о фоновом изображении кнопки или об изображении кнопки? Не уверен, какого именно поведения вы пытаетесь достичь. XJones 11.04.2011
  • @XJones: кода нет, я говорю о свойстве изображения в Interface Builder. Oliver 11.04.2011
  • UIImageView имеет только больше функций анимации, чем UIImage. Ничего, что могло бы помочь в вашем случае, я думаю Seega 11.04.2011
  • Непонятно, что вы пытаетесь сделать и что не работает. Изображения кнопок не масштабируются при изменении размера кнопки. Фоновые изображения кнопок масштабируются. XJones 11.04.2011
  • @XJones: Это просто. У меня есть UIButton в Interface Builder, я установил свойство изображения (не фоновое) с изображением ресурса (в раскрывающемся списке), и это изображение масштабируется до масштаба кнопки. Oliver 12.04.2011

iphoneimageuibuttoninterface-builder

Ответы

Ответ 1 · рейтинг 19 · XJones

Убедитесь, что свойства contentHorizontalAlignment и contentVerticalAlignment вашей кнопки не установлены на UIControlHorizontalAlignmentFill и UIControlVerticalAlignmentFill соответственно. Эти значения будут масштабировать изображение кнопки, чтобы заполнить рамку кнопки. Любое другое значение выровняет изображение соответствующим образом.

Ответ 2 · рейтинг 4 · freezing_

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

button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
button.imageEdgeInsets = UIEdgeInsetsMake(0,-10,0,0);

[button setImage:[UIImage imageNamed:@"back-button"] forState:UIControlStateNormal];

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы