如何使用蒙版为圆形图像添加边框

时间:2015-08-24 14:19:33

标签: ios swift mask cashapelayer

这是我的尝试:

func round() {
    let width = bounds.width < bounds.height ? bounds.width : bounds.height
    let mask = CAShapeLayer()
    mask.path = UIBezierPath(ovalInRect: CGRectMake(bounds.midX - width / 2, bounds.midY - width / 2, width, width)).CGPath

    self.layer.mask = mask

    // add border
    let frameLayer = CAShapeLayer()
    frameLayer.path = mask.path
    frameLayer.lineWidth = 4.0
    frameLayer.strokeColor = UIColor.whiteColor().CGColor
    frameLayer.fillColor = nil

    self.layer.addSublayer(frameLayer)
}

它适用于iphone 6模拟器(故事板的大小为4.7),但在5s和6+上它看起来很奇怪:

select the old platform

enter image description here

这是自动布局问题吗?没有边框,自动布局工作正常。这是我第一次使用面具,所以我不确定我所做的是否正确。

round中调用

viewDidLayoutSubviews函数。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

最简单的方法是操纵图像视图本身的layer

imageView.layer.cornerRadius = imageView.bounds.size.width / 2.0
imageView.layer.borderWidth = 2.0
imageView.layer.borderColor = UIColor.whiteColor.CGColor
imageView.layer.masksToBounds = true

您可以在viewDidLayoutSubviewslayoutSubviews中加入此内容,以确保尺寸始终正确。

注意:也许这种技术会使你的圆圈面具过时;-)。根据经验,始终选择最简单的解决方案。