배경 이미지의 마스크 역할을하는 반원형 선을 그립니다. 나는이 이미지가 있습니다 Backgound image 을하고 나는이 가져올 : 나는 정의의 UIView의 그리기 방법 안에 다음 코드를 시도 Mask ,하지만 난 단지 쓰다 경로가 아닌 마스크하는 방법을 모른다 전체 호. 내가 뭘 놓치고 있니?UIBezierPath를 사용하여 배경 이미지를 마스크하십시오.
let context = UIGraphicsGetCurrentContext()!
context.saveGState()
context.setLineWidth(4)
path = UIBezierPath()
path.addArc(withCenter: CGPoint(x: self.bounds.midX, y: self.bounds.height), radius: self.bounds.height-10, startAngle: -180 * CGFloat.pi/180, endAngle: 0 * CGFloat.pi/180, clockwise: true)
context.addPath(path.cgPath)
context.replacePathWithStrokedPath()
context.clip()
let gradient = CGGradient(colorsSpace: nil, colors: [UIColor.clear.cgColor, UIColor.clear.cgColor] as CFArray, locations: nil)!
context.drawLinearGradient(gradient, start: CGPoint(x: 0, y: 0), end: CGPoint(x: 200, y: 0), options: [])
context.restoreGState()
context.saveGState()
let myLayer = CALayer()
let myImage = UIImage(named: "color")?.cgImage
myLayer.frame = self.bounds
myLayer.contents = myImage
let maskLayer = CAShapeLayer()
maskLayer.path = context.path
myLayer.mask = maskLayer
self.layer.addSublayer(myLayer)
context.restoreGState()
안녕, 당신은 "어떻게에만 쓰다 경로를 마스크하는"무엇을 의미합니까? –
"context.setLineWidth (4)": 대신 너비와 함께이 정보가있는 경로를 만듭니다. 그것은 단지 2 개의 호와 2 개의 선입니다. – Larme
@Larme 그게 무슨 'replacePathWithStrokedPath' 않습니다 AFAIK – jrturton