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

StackOverflow https://stackoverflow.com/questions/1063019

Вопрос

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

Я установил его режим просмотра на Шкала для заполнения в Interface Builder, но в отличие от изображения UIImageView, он не учитывает этот параметр.

Я ищу не в том месте или это невозможно?

Это было полезно?

Решение

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

Другие советы

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

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

В Swift:

button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill

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

here set Control Alignment settings for the button

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

button.imageView.contentMode = UIViewContentModeScaleAspectFill;

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

[button setImage:yourAwesomeImage forState:UIControlStateNormal]; 
//Or any other state

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

Из Дизайна

  1. Откройте свой xib ИЛИ раскадровку.
  2. Кнопка выбора
  3. Внутри Инспектор атрибутов (Правая сторона) > В "Контроль" раздел > выбрать последний 4-й вариант как для Горизонтального, так и для Вертикального использования.

[Для Пункта №3:Измените выравнивание по горизонтали и вертикали на uicontrolcontent horizontalalignmentfill и UIControlContentVericalAlignmentFill]

Из Кода

кнопка.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;кнопка.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;

Конструктор интерфейсов

Чтобы изображения в UIButtons масштабировались так же, как UIViews в interface Builder, выполните следующие действия:

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

Просмотр изображения.contentMode Номер 1

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

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

Затем откройте Атрибуты редактор для вашего UIButton и под ним Контроль установите Выравнивание для заполнения (последняя кнопка справа) как по горизонтали, так и по вертикали.

БЫСТРЫЙ 3

Примечание. вы также можете сделать это в коде с помощью следующего:

button.imageView?.contentMode = .scaleAspectFit
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top