如何将覆盖层添加到 UIImageView 但不在图像的透明部分?

Posted

技术标签:

【中文标题】如何将覆盖层添加到 UIImageView 但不在图像的透明部分?【英文标题】:How to add an overlay layer to a UIImageView but not on the transparent part of the image? 【发布时间】:2017-08-18 17:43:32 【问题描述】:

我有这个UIImageView

self.princessImageView.image = UIImage(named: "princess")!

现在我正在尝试在此图像上添加一个 alpha 为 0.3 的彩色图层。我试过这个:

let overlayView: UIView = UIView(frame: CGRect(x: 0,
                                               y: 0,
                                               width: self.princessImageView.frame.size.width,
                                               height: self.princessImageView.frame.size.height))
overlayView.backgroundColor = UIColor.blue.withAlphaComponent(0.3)
self.princessImageView.addSubview(overlayView)

但我得到了这个结果。

我明白这当然是因为我在整个视图上设置了叠加层。有什么办法可以让我只在图像的非透明部分设置叠加层?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

您需要为此使用混合模式。

苹果文档:link

一些可能有帮助的相关内容:link1 link2

【讨论】:

感谢您的回复!可以使用此解决方案:***.com/a/42353385/2885727

以上是关于如何将覆盖层添加到 UIImageView 但不在图像的透明部分?的主要内容,如果未能解决你的问题,请参考以下文章

如何将渐变层放置到没有框架的 UIImageView 上

iPhone:相机预览覆盖

UIImageView 捏缩放和重新定位以适应覆盖

如何在 Swift 中使用色调和一些文本向 UIImageView 添加叠加层?

如何以编程方式将 UIImageView 添加到 UIStackView(故事板)

如何使 CAShape 层适合 UIImage 视图?