使用 mask 属性屏蔽 UIImageView 后添加蒙版边框

Posted

技术标签:

【中文标题】使用 mask 属性屏蔽 UIImageView 后添加蒙版边框【英文标题】:Add mask border after masking UIImageView with mask property 【发布时间】:2017-02-08 09:55:40 【问题描述】:

我设法使用 .mask 属性从 png 中获取 UIImageView 的蒙版,但想知道是否有任何简单的方法可以在蒙版周围绘制边框。

外观:

Image

代码(UICollectionViewCell)

lazy var maskingView: UIImageView = 

    let view = UIImageView()

    view.image = UIImage(named: "mask")
    return view
()

lazy var profilePictureContainerView: UIImageView = 

    let containerView = UIImageView()

    containerView.backgroundColor = .black
    containerView.translatesAutoresizingMaskIntoConstraints = false
    return containerView
()

override func layoutSubviews() 

    super.layoutSubviews()
    maskingView.frame = profilePictureContainerView.bounds


override init(frame: CGRect) 

    super.init(frame: frame)        
    profilePictureContainerView.mask = maskingView
    setUpViews()

setUpViews() 是一个 func,它只是布置一个 Collection View Cell 并将 profilePictureContainerView 定位在其中。

我想要达到的目标

在黑色形状(即蒙版的“内边缘”)周围放置一个边框,比如红色。

有什么想法吗?

【问题讨论】:

鉴于您的形状非常复杂和自定义,我想说没有直接的方法可以实现这一点。最简单的方法是将边框形状创建为单独的图像并将其覆盖在您的profilePictureContainerView 上。这仍然可以让您通过UIImageView 上的tintColor 属性更改其颜色,只需记住将图像标记为资产中的模板图像(krakendev.io/blog/…) @Losiowaty:确实在考虑按照您所说的解决方法。绝对很快,感谢您提醒我将图像标记为模板(很确定我会忘记它)。工作得很好! 【参考方案1】:

你试过层吗?

maskingView.layer.borderWidth = 1 // Or any width 
maskingView.layer.borderColor = UIColor.red.cgColor

【讨论】:

这将在视图周围给出一个矩形边框。 @Losiowaty 正是,正要回复。

以上是关于使用 mask 属性屏蔽 UIImageView 后添加蒙版边框的主要内容,如果未能解决你的问题,请参考以下文章

如何让 UIImageView 尊重它的 superview.layer.mask

使用 angular-ui-mask 时屏蔽 SSN 的前 5 个字符

屏蔽 UIImageView 不起作用

Snowflake Dynamic Masking 屏蔽了所有角色的列,包括我未屏蔽的角色

如何使用模板缓冲区仅屏蔽位于另一个对象后面的对象像素?

jquery屏蔽输入插件不清除字段?