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

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

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


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


Ответы (2)


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

person XJones    schedule 11.04.2011
comment
@ Оливер, в этом мне придется тебе поверить. Я не знаю других свойств, которые могли бы привести к масштабированию свойства изображения UIButton в зависимости от размера кнопки. Единственный способ воспроизвести вашу проблему — установить для параметров выравнивания элементов управления значение fill. Я делаю все это в IB, я предполагаю, что вы также основаны на ваших комментариях. - person XJones; 12.04.2011
comment
Глупая проблема. На самом деле, разрешение моего изображения было слишком большим, и при установке режима просмотра на любой другой, кроме «подгонка/заполнение», изображение не обрезалось, а заполняло кнопку. Я думал, что мой образ был достаточно маленьким, и такое поведение держало меня в заблуждении. Итак, после уменьшения размера изображения проблем больше нет, и ваш ответ был правильным. - person Oliver; 12.04.2011
comment
рад, что ты понял это. мы все делаем такие ошибки. - person XJones; 12.04.2011

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

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

[button setImage:[UIImage imageNamed:@"back-button"] forState:UIControlStateNormal];
person freezing_    schedule 01.08.2013
comment
Это хорошо, но вы также можете установить вставку изображения кнопки в Interface Builder ;-) - person MacMark; 07.01.2014
comment
ну это слишком просто - person Anton Tropashko; 01.12.2016