Почему пользовательское изображение UIButton не изменяет размер в Interface Builder?
-
21-08-2019 - |
Вопрос
Почему пользовательское изображение UIButton не изменяет размер с помощью кнопки?
Я установил его режим просмотра на Шкала для заполнения в Interface Builder, но в отличие от изображения UIImageView, он не учитывает этот параметр.
Я ищу не в том месте или это невозможно?
Решение
Хотя это может быть не совсем то, что вам нужно - фоновое изображение делает масштаб.
Другие советы
Попробуй это:
[button setImage:image forState:UIControlStateNormal];
button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
В Swift:
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
Я знаю, что это устарело, но я думаю, что правильный ответ заключается в том, что вы должны установить режим содержимого в "скрытый" UIImageView, который находится внутри UIButton:
button.imageView.contentMode = UIViewContentModeScaleAspectFill;
Это изменит режим содержимого для изображений просмотр изображений, установленных с помощью:
[button setImage:yourAwesomeImage forState:UIControlStateNormal];
//Or any other state
Просто сделайте (Из дизайна ИЛИ Из кода):
Из Дизайна
- Откройте свой xib ИЛИ раскадровку.
- Кнопка выбора
- Внутри Инспектор атрибутов (Правая сторона) > В "Контроль" раздел > выбрать последний 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 установите его обратно.Тогда вы сможете правильно масштабировать свое изображение.