屏蔽 UIImageView 不起作用

Posted

技术标签:

【中文标题】屏蔽 UIImageView 不起作用【英文标题】:Masking a UIImageView doesn't work 【发布时间】:2016-09-02 09:55:48 【问题描述】:

我有一个UIImageview 设置:

let picture = UIImageView(frame: imageFrame)
picture.image = UIImage(named: image)

你可以在这里看到它:

现在我想把它屏蔽成一个固定的大小,因为我要做的是随机大小的随机图片,所以我创建了一个 UIView:

let frame = CGRect(x: 0, y: CGRectGetMaxY(menuLine.frame) + HeightForSize * 0.05, width: view.bounds.width, height: HeightForSize * 0.9)
let mask = UIView(frame: frame)
mask.backgroundColor = UIColor.whiteColor()

当我将子视图添加到我的视图时,它看起来像这样:

但是当我试图掩盖它时:

picture.maskView = mask

看起来是这样的,这是怎么回事?

【问题讨论】:

我建议根本不要屏蔽。您可以将 imageView 的大小设置为固定大小,然后使用属性contentMode 来调整它显示图像的方式。我建议 ScaleAspectFill 猜测您是如何尝试使用它的。 你有一些代码作为例子,所以我知道怎么做,这是我第一次使用它 【参考方案1】:

UIImageView 尊重 contentMode 这可能比掩码更容易满足您的目的。将您的 imageView 设置为您希望所有图像适合的固定大小。例如,如果您希望图像挤入并在其太高时显示黑条,请使用 UIViewContentMode.scaleAspectFit。但更有可能看起来最好的是UIViewContentMode.scaleAspectFill。它将保持图像的纵横比和比例,直到填满您创建的 imageView 框。玩一下这两种模式和其他模式,看看它们的效果。

let imageView = UIImageView(image: UIImage(named: "myImage"))
imageView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
imageView.contentMode = .scaleAspectFill

您可以在此处尝试有关各种 contentModes 的更多信息。

https://developer.apple.com/reference/uikit/uiviewcontentmode

【讨论】:

以上是关于屏蔽 UIImageView 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UIImageView 不起作用

具有异步 UIImageView 的自动布局 UITableViewCell 不起作用

Xcode UIImageView 圆角不起作用

UIImageView 在 UITableViewCell 中不起作用

在 UIImageView 上设置角半径不起作用

带有重定向 URL 的 UIImageView 不起作用