繁体   English   中英

UIButton背景图片水平缩放以在保持宽高比的同时进行填充

[英]UIButton background image horizontal scale to fill while maintaining aspect ratio

我正在尝试将UIButton的backgroundImage设置为任何大小的图像。 我要显示高图像的方式是使图像展开以水平填充按钮,并且仅显示图像的顶部。 因此,对于尺寸为100x200且图像为80x400的按钮,我想将图像缩放到100x500,并且只显示该缩放图像的前200个像素。

我想知道是否有某种方法可以更改背景图像填充uibutton的方式(现在它不会保留图像的长宽比)。 我尝试设置contentMode按钮和按键的的imageView (注意我设置的按钮,一个Custom类型,而不是System ),以.ScaleAspectFill ,但没有做任何事情。

我最接近的是完全抛弃背景图像,而是使用setImage 该代码能够水平填充按钮,但是它显示图像的中间,而不是顶部。 它还具有奇怪的功能,如果缩放的图像与按钮的高度相同,则不会显示完整的图像(从底部和顶部切下约5 px)。 这是该代码:

imagesButton.imageView?.contentMode = .ScaleAspectFill
imagesButton.contentHorizontalAlignment = .Fill
imagesButton.setImage(image, forState: .Normal)

我看过大约5篇关于UIButtons中图像大小调整的堆栈溢出文章,但是找不到适合我特殊需要的正确设置集。

我不知道该解决方案是否适合您,但是是实现您要尝试的最佳方法,并且可以为您提供与定位和缩放图像一样多的灵活性,可以使用一个UIImageView(甚至可以使用包装它的UIView,以获得更多的图像处理选项),并在其顶部具有一个透明的自定义按钮。

这种方法的好处是,您几乎可以对图像和显示方式进行任何所需的操作。 缺点是您失去了一些默认的UIButton功能(例如触摸时自动更改图像)。 但是您可以根据需要以编程方式实现这些功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM