2014-12-02 45 views
9

我有一个UIButton从网络下载的形象,我想要的内容模式为“纵横补”工作,所以我这样做:上的UIButton的ImageView的设置ContentMode到AspectFill不与较小的图像

btn.imageView.contentMode = UIViewContentModeScaleAspectFill; 

然后我需要调用:

[btn setImage:image forState:UIControlStateNormal]; 

这适用于那些图像比按钮大。它们被缩放以适应宽高比不变的按钮。但对于那些比按钮小的图像,它们只是简单地显示在中心而不被拉伸。

为了解决这个问题,我尝试了用我检索的图像制作一个可调整大小的图像,然后在我的按钮上调用setImage:forState:,但这不起作用。

因此,我最终不得不手动绘制一个比我的按钮小,然后使用绘制的图像为我的按钮,但我不喜欢这种解决方案的每个图像调整大小的图像。

所以我的问题是如何在我的按钮上正确缩放缩放的图像,而不必每次都手动绘制调整大小的图像?

+0

我编辑了答案,请检查它... – 2014-12-03 05:48:51

回答

24

我有这个相同的问题。试试这个:

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentFill]; 
    [btn setContentVerticalAlignment:UIControlContentVerticalAlignmentFill]; 

从我的理解,设置图像时,该按钮的UIImageView的大小/帧设置为图像的,所以当它是小的,它不是由UIButton的的框架限制,而因此坐在按钮的中间,愉快地,不变地坐着。

要解决这个问题,我们需要强制UIImageView占用UIButton的全部大小,并设置它的对齐来处理这个问题。

详情参见(虽然它是指此为自动版式问题):从UIButton的
1.继承
2.重写layoutSubviews方法,像这样: https://stackoverflow.com/a/28205566/3692828

+2

完美,正确的答案! – axl411 2015-04-14 02:13:42

+0

谢谢。有用。 – Kit 2016-07-11 12:41:01

+0

没有为我工作。 在Ipad IOS 10我试图在UIbutton上设置图像。按钮尺寸150x150和图像比那更大。当我尝试在其上设置图像时,它需要该图像的左上角 – 2017-02-09 09:55:09

0

试试这个

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    self.imageView.frame = self.bounds; 
} 
相关问题