Вместо установки contentMode
на самой кнопке вы захотите установить свойства contentHorizontalAlignment
и contentVerticalAlignment
и (что крайне важно) contentMode
для кнопки imageView
для любого вида заливки или поместиться. Вот пример:
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
button.imageView.contentMode = UIViewContentModeScaleAspectFit;
Конечно, вы также можете делать другие вещи, такие как выравнивание изображения кнопки в верхней части кнопки. Если вам не нужна заливка или подгонка аспектов, вы можете просто установить выравнивание:
button.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
В Swift вы захотите использовать:
button.contentHorizontalAlignment = .fill
button.contentVerticalAlignment = .fill
button.imageView?.contentMode = .scaleAspectFit
Это работает для всех версий iOS, включая последние версии с автоматическим макетом (т.е. iOS 4 до iOS 11 +).