본문 바로가기

프로그래밍/iOS

[iOS] circleView외곽 dimming 처리

카카오톡 프로필 사진처럼 동그라미 뷰를 만드는 것과 연계로 

사진을 crop할때 프로필 사진에 사용되는 원 영역 외에는 dimming처리를 하고 싶어 사용한 코드

위 사진과 같이 네모 안의 동그라미 외의 부분을 dimming처리하는 코드다.

반원들은 네모 크기 조절하기 위해 붙인 circle view니 신경쓸 필요 없다.

     /**

     crop 안의 동그라미 바깥부분을 가려주는 뷰를 만드는 함수

           - parameter view : circle뷰의 rect정보

     */

    func maskingCircleView(view:Rect{

        let maskRect = CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height)

        UIGraphicsBeginImageContext(maskRect.size)

        let context = UIGraphicsGetCurrentContext()

        context?.setFillColor(UIColor.init(white: 0, alpha: 0.5).cgColor)

        context?.fill(maskRect)

        context?.setBlendMode(CGBlendMode.clear)

        context?.setFillColor(UIColor.clear.cgColor)

        context?.fillEllipse(in: maskRect)

        let image = UIGraphicsGetImageFromCurrentImageContext()

        UIGraphicsEndImageContext()

        let circleMaskingImageView = UIImageView(frame: maskRect)

        circleMaskingImageView.image = image

        circleMaskingImageView.backgroundColor = UIColor.clear

        circleMaskingImageView.center = cropView.center

        self.view.addSubview(circleMaskingImageView);

    }