【问题标题】:UIButton background image horizontal scale to fill while maintaining aspect ratioUIButton 背景图像水平缩放以填充同时保持纵横比
【发布时间】:2015-08-20 02:14:43
【问题描述】:

我正在尝试将 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 中图像大小调整的堆栈溢出帖子,但我找不到满足我特定需求的正确设置。

【问题讨论】:

    标签: ios swift uibutton uiimage


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-26
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多