Ответ 1
Вы пробовали setImage
вместо setBackgroundImage
?
Я пытаюсь создать пользовательский 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, похоже, ничего не меняет.
Вы пробовали setImage
вместо setBackgroundImage
?
Убедитесь, что кнопка является пользовательской UIButton
Просто использование setImage:
не работало для меня на iOS9.
Но он работал в сочетании с myButton.imageView.contentMode = UIViewContentMode.ScaleAspectFit;
В Swift...
button.imageView?.contentMode = .aspectFit
Свойство изображения.
Вы должны определить конкретные свойства в режиме исполнения Атрибуты инспектора идентичности - imageView.contentMode
, где вы установили значение относительно rawValue
позиции перечислений UIViewContentMode
. 1 означает scaleAspectFit.
И выравнивание кнопок, в инспекторе Атрибутов:
Swift 4.2
myButton.imageView!.contentMode = .scaleAspectFit
Swift ранняя версия
myButton.imageView!.contentMode = UIViewContentMode.scaleAspectFit
Я думаю, что вы, ребята, упускаете очевидную проблему. Изображение слишком велико для кнопки, и iOS должна угадать, как вы хотите его масштабировать. Убедитесь, что ваши изображения имеют правильный размер, и у вас не будет этой проблемы. Конечно, это для статических изображений и кнопок, размер которых вы знаете заранее, а не динамический контент.
Swift 4.X и 5.X
button.imageView!.contentMode = .scaleAspectFit
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill