Ответ 1
Хотя это может быть не совсем то, что вам нужно - фоновая картинка делает.
Почему пользовательское изображение UIButton не изменяется с помощью кнопки?
Я устанавливаю его режим просмотра "Масштаб для заполнения в построителе интерфейса", но, в отличие от изображения UIImageView, он не соблюдает эту настройку.
Я смотрю в неправильном месте или это невозможно?
Хотя это может быть не совсем то, что вам нужно - фоновая картинка делает.
Попробуй это:
[button setImage:image forState:UIControlStateNormal];
button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
В Свифте:
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
Не забудьте установить параметры настройки управления для кнопки
Я знаю, что это старо, но я думаю, что правильный ответ заключается в том, что вы должны настроить режим содержимого на "скрытый" UIImageView, который находится внутри UIButton:
button.imageView.contentMode = UIViewContentModeScaleAspectFill;
Это изменит режим содержимого для изображений изображений, установленных с помощью:
[button setImage:yourAwesomeImage forState:UIControlStateNormal];
//Or any other state
Просто сделайте (из дизайна OR From Code):
[Для пункта №3: изменение горизонтального и вертикального выравнивания по UIControlContentHorizontalAlignmentFill и UIControlContentVericalAlignmentFill]
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
Конструктор интерфейсов
Чтобы изображения в UIButtons масштабировались так же, как UIViews в интерфейсе Builder, выполните следующие действия:
Выберите свой UIButton и Identity Inspector, добавьте следующее для пользователя Определенные атрибуты времени выполнения:
imageView.contentMode Number 1
Где число - номер перечисления contentMode, например:
0 = Scale to fill
1 = Aspect Fit
2 = Aspect Fill
etc..
Затем откройте редактор Атрибуты для вашего UIButton и в Control установите Выравнивание для заполнения (последняя кнопка справа) как для горизонтальной, так и для вертикали.
SWIFT 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
Это уменьшит масштаб изображения, чтобы он соответствовал формату изображения.
Просто получите реальный UIimageview и поместите UIbutton поверх него, а в меню макета установите его обратно. Затем вы можете масштабировать изображение правильно.