如何不在UIButton中拉伸图像

我试图以编程方式创build一个自定义的UITableViewCell,这个单元格的其中一个子视图将会是一个带有图像的button(一个放大镜的简单图像)。 但是,我希望button的图像居中并按比例缩小以适应button,而不是被拉伸以填充整个button。 下面是我的代码,其中self是指我将button放入的自定义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]; 

现在图像延伸填充整个button,而不是比例缩放,以便它很好地适合。

我也尝试将contentMode设置为UIViewContentModeScaleAspectFill但这似乎并没有改变任何东西。 事实上,不同的内容模式似乎没有改变任何东西。

你有没有尝试setImage而不是setBackgroundImage

确保button是一个自定义UIButton

只使用setImage:在iOS9上不适用于我。

但它与myButton.imageView.contentMode = UIViewContentMode.ScaleAspectFit;

在Swift中…

 button.imageView?.contentMode = .aspectFit 

故事板

您必须在Identity inspector的 运行时属性中定义特定属性 – rawValue ,其中您将值设置为相对于enum UIViewContentMode rawValue位置。 1表示scaleAspectFit

在Storyboard中设置button.imageView.contentMode

和button的alignment,在属性检查器

按钮的完全对齐

Swift版本

 myButton.imageView!.contentMode = UIViewContentMode.scaleAspectFit