AspectFill 不填充 UIImageView

Posted

技术标签:

【中文标题】AspectFill 不填充 UIImageView【英文标题】:AspectFill does not fill the UIImageView 【发布时间】:2014-06-20 14:14:59 【问题描述】:

我有一个将contentMode 设置为UIViewContentModeScaleAspectFill 的按钮。我是这样设置的:

self.itemImage.imageView.contentMode = UIViewContentModeScaleAspectFill;

我还将它设置为模式 - 为按钮在 IB 中填充方面,以防万一。当我设置图像时,我不设置为背景图像:

[self.itemImage setImage:image forState:UIControlStateNormal];

但是,有时我的图像不会填充按钮(我希望它这样做),就像在这种情况下:

查看两边的灰色空间。发生在 ios 6 和 7 上。

有什么想法吗?

【问题讨论】:

itemImage 是我的 UIButton 名称 使用 self.itemImage.contentMode = UIViewContentModeScaleAspectFill; [self.itemImage setBackgroundImage:forState:]. UIButton 的图像只是按钮的一部分。如果您设置图像和文本,它们将彼此相邻出现。您可以尝试摆脱间距,但那将是 hack-ish。 @Klass,我不使用任何文字,只使用图像。它适用于完全相同的其他按钮。会不会是图片比按钮框小?话虽如此,ScaleAspectFill 不应该缩放图像以填充按钮吗? 如果我将其设置为backgroundImage,图像会填充按钮,但会被拉伸,并且不会保持原来的纵横比。 backgroundImage 的 contentMode 可以单独控制吗? 【参考方案1】:

终于,我设法在 Alfie 对this SO question 的回答中找到了可行的解决方案。

简而言之,如果您的UIButton(或其隐藏的imageView)没有响应contentMode,请使用此代码:

self.button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
self.button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;

【讨论】:

以上是关于AspectFill 不填充 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

图像在 ScrollView 内时不适合/填充

自定义 UITableViewCell 中的 PFImageView 使用 contentMode“AspectFill”显示不正确

在Xcode中设置图像高度填充自动布局

如何将边框添加到内容模式设置为方面填充的 UIImage

与 Aspect Fill 类似的行为,但使用图像的顶部

Nativescript Vue图像拉伸aspectFill不起作用