Почему пользовательский образ UIButton не изменяется в Интерфейсном Разработчике? - PullRequest
42 голосов
/ 30 июня 2009

Почему пользовательское изображение UIButton не изменяется с помощью кнопки?

Я установил режим просмотра на Масштаб до Заполнить в Интерфейсном Разработчике, но, в отличие от изображения UIImageView, он не соответствует этому параметру.

Я смотрю не в том месте или это невозможно?

Ответы [ 9 ]

79 голосов
/ 30 июня 2009

Хотя это может быть не совсем то, что вам нужно - фоновое изображение имеет масштаб.

51 голосов
/ 15 октября 2014

Попробуйте это:

[button setImage:image forState:UIControlStateNormal];
button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;

В Swift:

button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
34 голосов
/ 13 декабря 2016

Не забудьте установить настройки выравнивания управления для кнопки

here set Control Alignment settings for the button

11 голосов
/ 17 июня 2013

Я знаю, что это старый, но я думаю, что правильный ответ заключается в том, что вы должны установить режим содержимого для "скрытого" UIImageView, который находится внутри UIButton:

button.imageView.contentMode = UIViewContentModeScaleAspectFill;

Это изменит режим содержимого для представлений изображений для изображений, установленных с помощью:

[button setImage:yourAwesomeImage forState:UIControlStateNormal]; 
//Or any other state
10 голосов
/ 11 сентября 2015

Просто сделай (из дизайна или из кода):

Из дизайна

  1. Откройте XIB ИЛИ раскадровку.
  2. Кнопка выбора
  3. Внутри Инспектор атрибутов (Правая сторона)> В «Управление» * секция 1013 *> выберите последний 4-й вариант как для горизонтального, так и вертикального.

[Для точки # 3: изменить горизонтальное и вертикальное выравнивание на UIControlContentHor HorizontalAlignmentFill и UIControlContentVericalAlignmentFill]

Из кода

button.contentHor HorizontalAlignment = UIControlContentHor HorizontalAlignmentFill; button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;

5 голосов
/ 20 мая 2017

Интерфейсный Разработчик

Чтобы заставить изображения в UIB-кнопках масштабироваться так же, как UIViews в Интерфейсном Разработчике, выполните следующие действия:

Выберите свою UIButton и из Identity Inspector добавьте следующее к пользователю Определенные атрибуты времени выполнения :

imageView.contentMode Number 1

Где число - это номер перечисления contentMode, например:

0 = Scale to fill 
1 = Aspect Fit 
2 = Aspect Fill
etc..

Затем откройте редактор Атрибуты для вашей кнопки UIB и в разделе Control установите Alignment на Fill (последняя кнопка справа) для горизонтальной и вертикальной линий.

SWIFT 3

Обратите внимание, что вы также можете сделать это в коде со следующим:

button.imageView?.contentMode = .scaleAspectFit
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
0 голосов
/ 05 февраля 2016

Лучшее решение, которое я нашел в Swift 2.1, это следующее:

self.imageButton.imageView?.clipsToBounds = true
self.imageButton.imageView?.contentMode = UIViewContentMode.ScaleAspectFit

Это позволит масштабировать изображение, чтобы оно соответствовало аспекту изображения.

0 голосов
/ 05 марта 2010

Просто получите настоящий UIimageview и поместите UIbutton поверх него, и через меню макета установите его обратно. Тогда вы сможете правильно масштабировать изображение.

0 голосов
/ 30 июня 2009

Попробуйте установить для свойства подпредставления Clip в Interface Builder значение true.

Надеюсь, это поможет.

...