UIBezierPath を使用して以下の円を作成しています。円の反対側に 2 つの異なる色があることに注意してください。写真の小さな長方形の上下を丸くしたいと思います。
四角形 (技術的にはダッシュ) のそれぞれの上部と下部を丸くしたい。このような:
現在、私はこのコードを使用して円を作成しています:
let bounds = self.view.bounds
let arcCenter = CGPoint(x: bounds.midX, y: bounds.midY)
let whiteLayer = CAShapeLayer()
let redLayer = CAShapeLayer()
whiteLayer.fillColor = UIColor.clear.cgColor
whiteLayer.strokeColor = UIColor.white.cgColor
var whiteRing = UIBezierPath(arcCenter: arcCenter, radius: CGFloat(125), startAngle: 0, endAngle: CGFloat.pi, clockwise: false)
whiteRing.rotateAroundPoint(angle: CGFloat.pi/2, center: arcCenter)
whiteLayer.lineWidth = 10
whiteLayer.lineDashPattern = [2, 3]
whiteLayer.path = whiteRing.cgPath
redLayer.fillColor = UIColor.clear.cgColor
redLayer.strokeColor = UIColor.red.cgColor
var redRing = UIBezierPath(arcCenter: arcCenter, radius: CGFloat(125), startAngle: 0, endAngle: CGFloat.pi, clockwise: true)
redRing.rotateAroundPoint(angle: CGFloat.pi/2, center: arcCenter)
redLayer.lineWidth = 10
redLayer.lineDashPattern = [2, 3]
redLayer.path = redRing.cgPath
self.view.layer.addSublayer(whiteLayer)
self.view.layer.addSublayer(redLayer)
これがUIBezierPathで可能かどうかは正直わかりません.CARReplicatorLayerのようなものを使用してこれを達成しようとしていましたが、各ダッシュ/白と赤の部分が重ならないように、四角形と円の 2 つの別々の部分を合わせます。2 つの異なる色を使用せずにこれを行うと、はるかに簡単になりますが、私の使用例では、2 つの異なる色が必要です。とにかくUIBezierPathでこれを行う方法はありますか?そうでない場合は、CAReplicatorLayerを使用して最初の写真の円を作成し、それぞれの小さなダッシュ/長方形が上下に丸みを帯びているようにするにはどうすればよいですか?