UIButton背景图像水平刻度填充,同时保持纵横比

时间:2015-08-20 02:14:44

标签: ios swift uibutton uiimage

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

我想知道是否有某种方法可以改变背景图像填充uibutton的方式(现在它不会保留图像的纵横比)。我尝试设置按钮的public abstract class Sup{ ... public static void init(Class<? extends Sup> typeClass) { ... alreadyDeclaredHashMap.put(typeClass, hashMapOfOtherStuff); } } public class A extends Sup { static { init(A.class); } } public class B extends Sup { static { init(B.class); } } 和按钮contentMode(注意我将按钮设置为imageView类型,而不是Custom)到System但是什么也没做

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

setImage

我看过UIButtons中关于图像大小调整的大约5个堆栈溢出帖子,但我找不到能够解决我特殊需求的正确设置。

1 个答案:

答案 0 :(得分:0)

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

这种方法的优点在于,您可以使用图像和显示方式完成您想要的任何操作。缺点是您丢失了一些默认的UIButton功能(例如触摸时自动更改图像)。但是如果需要,您可以通过编程方式实现这些功能。