我正在尝试将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个堆栈溢出帖子,但我找不到能够解决我特殊需求的正确设置。
答案 0 :(得分:0)
我不知道这个解决方案是否适合您,但是实现您尝试做的最佳方式,并为您提供与您一样灵活的灵活性定位和缩放图像,它使用UIImageView(甚至可以使用包装它的UIView,以获得更多图像处理选项),并在其顶部使用透明的自定义按钮。
这种方法的优点在于,您可以使用图像和显示方式完成您想要的任何操作。缺点是您丢失了一些默认的UIButton功能(例如触摸时自动更改图像)。但是如果需要,您可以通过编程方式实现这些功能。