2
:破線
class DashedLineView: UIView {
override func draw(_ rect: CGRect) {
let path = UIBezierPath(roundedRect: rect, cornerRadius: 8)
UIColor.clear.setFill()
path.fill()
UIColor.red.setStroke()
path.lineWidth = 3
let dashPattern : [CGFloat] = [3, 3]
path.setLineDash(dashPattern, count: 2, phase: 0)
path.stroke()
}
}
結果は次のとおりです。
あなたがそこにある見ることができるようにコーナーの問題、どのようにそれを修正するための任意のアイデア?
更新日: @ジョン・ローズanswerを使用DashedLineView
は次のようになります。
class DashedLineView: UIView {
private let borderLayer = CAShapeLayer()
override func awakeFromNib() {
super.awakeFromNib()
borderLayer.strokeColor = UIColor.red.cgColor
borderLayer.lineDashPattern = [3,3]
borderLayer.backgroundColor = UIColor.clear.cgColor
borderLayer.fillColor = UIColor.clear.cgColor
layer.addSublayer(borderLayer)
}
override func draw(_ rect: CGRect) {
borderLayer.path = UIBezierPath(roundedRect: rect, cornerRadius: 8).cgPath
}
}
drawRectの代わりにCAShaperLayerを使用することを検討してください。私はこれをCAShaperLayerとパスを使って実装しましたが、うまく表示されます。 –
例を投稿できますか? – sash