// // CircleCropView.swift // CIrcleCropView Test // // Created by Bhavesh Chaudhari on 08/05/20. // Copyright © 2020 Bhavesh. All rights reserved. // import UIKit public class CircleCropView: UIView { override init(frame: CGRect) { super.init(frame: frame) self.backgroundColor = UIColor.black.withAlphaComponent(0.58) isUserInteractionEnabled = false } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } var circleInset: CGRect { let rect = bounds let minSize = min(rect.width, rect.height) let hole = CGRect(x: (rect.width - minSize) / 2, y: (rect.height - minSize) / 2, width: minSize, height: minSize).insetBy(dx: 15, dy: 15) return hole } override public func draw(_ rect: CGRect) { // guard let context = UIGraphicsGetCurrentContext() else { return } // context.saveGState() // let holeInset = circleInset // context.addRect(holeInset) // context.clip() // context.clear(holeInset) // // context.draw(UIImage(named: "WhiteGrid.png")!.cgImage!, in: holeInset) // context.setFillColor(UIColor.clear.cgColor) // context.fill( holeInset) // context.setStrokeColor(UIColor.white.cgColor) // context.strokeEllipse(in: holeInset) // context.restoreGState() guard let context = UIGraphicsGetCurrentContext() else { return } context.saveGState() let holeInset = circleInset context.addRect(holeInset) context.clip() context.clear(holeInset) context.draw(UIImage(named: "WhiteGrid.png")!.cgImage!, in: holeInset) context.setFillColor(UIColor.clear.cgColor) context.fill( holeInset) context.setStrokeColor(UIColor.white.cgColor) context.strokeEllipse(in: holeInset) context.restoreGState() } }