背景画像にマスクとして機能する半円の線を描きたい。私は、このイメージがあります Backgound image を、私は、この取得したい:私は、カスタムのUIViewのdrawメソッド内で、次のコードを試してみました 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