CAShapeLayer由图像视图剪辑裁剪到边界

时间:2018-08-27 06:09:45

标签: ios uiimageview cashapelayer

我正在尝试自定义UIImage视图,以包括一个红色/绿色圆圈来显示在线状态。我当前的代码如下:

import UIKit

class AvatarImageView: UIImageView {

    enum AvatarImageViewOnlineStatus {
        case online
        case offline
        case hidden
    }

    var onlineStatus: AvatarImageViewOnlineStatus = .hidden

    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setup()
    }

    private func setup() {
        clipsToBounds = true
        layer.cornerRadius = frame.size.width / 2.0
        let circleShapeLayer: CAShapeLayer = CAShapeLayer()
        circleShapeLayer.path = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 30, height: 30)).cgPath
        circleShapeLayer.fillColor = UIColor.red.cgColor
        layer.addSublayer(circleShapeLayer)
    }

}

但是该图层也会被裁剪:

enter image description here

默认情况下,图层上的

maskToBounds设置为false,文档状态为:

  

一个布尔值,指示是否将子层裁剪到该层的边界。可动画的。

但是它仍然被裁剪。我在这里做什么错了?

0 个答案:

没有答案