在UIButton的ImageView上将ContentMode设置为AspectFill不适用于较小的图像

axl*_*411 11 uibutton ios

我有一个UIButton从网络下载其图像,我希望内容模式是"方面填充",所以我这样做:

btn.imageView.contentMode = UIViewContentModeScaleAspectFill;
Run Code Online (Sandbox Code Playgroud)

然后我简单地打电话:

[btn setImage:image forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

ben*_*een 27

我有同样的问题.试试这个:

    [btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentFill];
    [btn setContentVerticalAlignment:UIControlContentVerticalAlignmentFill];
Run Code Online (Sandbox Code Playgroud)

根据我的理解,在设置图像时,按钮的UIImageView的大小/帧被设置为图像的大小/帧,因此当它更小时,它不受UIButton框架的约束,因此可以快乐地保持不变,在中间按钮.

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

有关详细信息,请参阅参考资料(尽管它将此称为AutoLayout问题):https://stackoverflow.com/a/28205566/3692828