Подтвердить что ты не робот

Как не растягивать изображение в UIButton

Я пытаюсь создать пользовательский UITableViewCell программно, и одно из подзонов этой ячейки станет кнопкой с изображением в ней (простым изображением увеличительного стекла). Тем не менее, я хочу, чтобы изображение кнопки было центрировано и масштабировано пропорционально вниз, чтобы поместиться в кнопке, и НЕ растягиваться, чтобы заполнить всю кнопку. Ниже мой код, где self относится к пользовательскому UITableViewCell, на который я помещаю кнопку.

self.myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[self.myButton setBackgroundImage:[UIImage imageNamed: @image_name_here"] forState:UIControlStateNormal];
self.myButton.frame = CGRectMake(...//something, something)
self.myButton.imageView.contentMode = UIViewContentModeCenter;
[self.contentView addSubview:self.mySearchHelpButton];

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

Я также попытался настроить contentMode на UIViewContentModeScaleAspectFill, но это ничего не меняет. На самом деле, ни один из разных contentModes, похоже, ничего не меняет.

4b9b3361

Ответ 1

Вы пробовали setImage вместо setBackgroundImage?

Ответ 2

Убедитесь, что кнопка является пользовательской UIButton

Просто использование setImage: не работало для меня на iOS9.

Но он работал в сочетании с myButton.imageView.contentMode = UIViewContentMode.ScaleAspectFit;

Ответ 3

В Swift...

button.imageView?.contentMode = .aspectFit

Ответ 4

Раскадровка

Свойство изображения.

Вы должны определить конкретные свойства в режиме исполнения Атрибуты инспектора идентичности - imageView.contentMode, где вы установили значение относительно rawValue позиции перечислений UIViewContentMode. 1 означает scaleAspectFit.

Set button.imageView.contentMode in Storyboard

И выравнивание кнопок, в инспекторе Атрибутов:

Full alignment of button

Ответ 5

Swift 4.2

myButton.imageView!.contentMode = .scaleAspectFit

Swift ранняя версия

myButton.imageView!.contentMode = UIViewContentMode.scaleAspectFit

Ответ 6

Я думаю, что вы, ребята, упускаете очевидную проблему. Изображение слишком велико для кнопки, и iOS должна угадать, как вы хотите его масштабировать. Убедитесь, что ваши изображения имеют правильный размер, и у вас не будет этой проблемы. Конечно, это для статических изображений и кнопок, размер которых вы знаете заранее, а не динамический контент.

Ответ 7

Swift 4.X и 5.X

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