【问题标题】:UIButton with the imageView set to UIViewContentModeScaleAspectFill doesn't fill completely with small images将 imageView 设置为 UIViewContentModeScaleAspectFill 的 UIButton 不会完全填充小图像
【发布时间】:2015-02-10 13:08:27
【问题描述】:

我的应用中有一个UIButton,而不是文本,我给它一个图像,因为它作为缩略图按钮提供服务,在被点击时会显示完整的图像。

我看到this answer 似乎是可接受的实现,但是对于比按钮本身小的图像,图像视图实际上并没有像 contentMode 那样填充按钮,或者像图像视图那样如下图:

如您所见,图像视图可以正常展开,但按钮不能正确展开。 (按钮背景设置为蓝色,以便您可以看到它未显示的位置。)

我正在做的代码非常简单:

myButton.setImage(UIImage(named: "pokemon"), forState: .Normal)
myButton.imageView!.contentMode = .ScaleAspectFill

如何更改它以使其正确填充?

示例项目: http://cl.ly/0z2T1A1Z3v3m

【问题讨论】:

  • 这是 UIButton 的预期行为。从文档中,“按钮”,“图像不会拉伸或压缩,因此请确保选择大小合适的图像以显示在按钮中”
  • 那我如何让它拉伸或压缩呢?
  • 您需要调整图像大小。您可以通过将图像绘制到正确大小的图像上下文中来做到这一点。如果你在这个网站上搜索“resize image”,你会找到很多答案。
  • @rdelmar 实际上,contentVerticalAlignment 和水平对应设置为 .Fill 正是我需要的。

标签: ios cocoa-touch uiview uiimageview uibutton


【解决方案1】:

UIButton 上将contentHorizontalAlignmentcontentVerticalAlignment 设置为.Fill 使其完全扩展。

【讨论】:

    【解决方案2】:

    将图像设置为按钮的背景。这将填充按钮的框架,无需更改内容模式。 使用setBackgroundImage() 方法将图像设置为按钮的背景。 祝你好运!

    编辑

    选项 1

    在图像视图中使用UIImageViewUITapGestureRecognizer 和所需的contentMode 怎么样?

    选项 2

    将图像裁剪为按钮的大小,并将其设置为按钮的背景图像。

    希望这会有所帮助!

    【讨论】:

    • 我如何让它成为 Aspect Fill 而不是拉伸它?
    • 什么意思?纵横比填充模式将并且应该拉伸图像。
    • 如何在 backgroundImage 上设置它?您只能在imageView 上设置它,而不是backgroundImageView
    • 使用setBackgroundImage()方法将图片设置为按钮的背景。我已经编辑了我的答案。
    • 是的,但是默认情况下拉伸图像,没有办法在 backgroundImage 上设置 contentMode,只能设置常规图像。
    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 2017-03-14
    • 2016-02-03
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多