layer

部分圆角
    lazy var redView: UIView = {
        let view = UIView(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
        view.backgroundColor = UIColor.red
        return view
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.addSubview(redView)
        
        let frame = redView.bounds
        let maskPath = UIBezierPath(roundedRect: frame, byRoundingCorners: [.topLeft,.bottomLeft], cornerRadii: CGSize(width: 20, height: 20))
        let maskLayer = CAShapeLayer()
        maskLayer.frame = frame
        maskLayer.path = maskPath.cgPath
        redView.layer.mask = maskLayer
    }
效果图
渐变色
        let bgLayer = CAGradientLayer()
        bgLayer.colors = [UIColor.red.cgColor,UIColor.blue.cgColor]
        bgLayer.locations = [0,1]
        bgLayer.frame = frame
        bgLayer.startPoint = CGPoint(x: 0, y: 0)
        bgLayer.endPoint = CGPoint(x: 1, y: 0)
        redView.layer.addSublayer(bgLayer)
效果图
镂空效果
        let path = UIBezierPath(rect: frame)
        let carvedPath = UIBezierPath(rect: CGRect(x: (frame.width-100)/2, y: (frame.height-100)/2, width: 100, height: 100))
        path.append(carvedPath)
        let layer = CAShapeLayer()
        layer.frame = frame
        layer.fillColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).cgColor
        layer.strokeColor = UIColor.white.cgColor
        layer.fillRule = .evenOdd
        layer.path = path.cgPath
        redView.layer.addSublayer(layer)
效果图
完整代码
   lazy var redView: UIView = {
        let view = UIView(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
        view.backgroundColor = UIColor.red
        return view
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.addSubview(redView)
        
        let frame = redView.bounds
        let maskPath = UIBezierPath(roundedRect: frame, byRoundingCorners: [.topLeft,.bottomLeft], cornerRadii: CGSize(width: 20, height: 20))
        let maskLayer = CAShapeLayer()
        maskLayer.frame = frame
        maskLayer.path = maskPath.cgPath
        redView.layer.mask = maskLayer
        
        let bgLayer = CAGradientLayer()
        bgLayer.colors = [UIColor.red.cgColor,UIColor.blue.cgColor]
        bgLayer.locations = [0,1]
        bgLayer.frame = frame
        bgLayer.startPoint = CGPoint(x: 0, y: 0)
        bgLayer.endPoint = CGPoint(x: 1, y: 0)
        redView.layer.addSublayer(bgLayer)
        
        let path = UIBezierPath(rect: frame)
        let carvedPath = UIBezierPath(rect: CGRect(x: (frame.width-100)/2, y: (frame.height-100)/2, width: 100, height: 100))
        path.append(carvedPath)
        let layer = CAShapeLayer()
        layer.frame = frame
        layer.fillColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).cgColor
        layer.strokeColor = UIColor.white.cgColor
        layer.fillRule = .evenOdd
        layer.path = path.cgPath
        redView.layer.addSublayer(layer)
        
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。