UIBezierPath с рамкой 1 px (округленныйRect: byRoundingCorners :) - PullRequest
0 голосов
/ 19 сентября 2018

Как получить чистую границу в 1 пиксель для UIBezierPath с разными закругленными углами?

В приведенном ниже примере я использовал 3 угла.Код внутри UIView:

let borderLayer = CAShapeLayer()
borderLayer.frame = bounds
borderLayer.path = UIBezierPath(roundedRect: bounds, byRoundingCorners: [.topRight, .bottomLeft, .bottomRight], cornerRadii: CGSize(width: 24, height: 24)).cgPath
borderLayer.fillColor = UIColor.clear.cgColor
borderLayer.lineWidth = 1
borderLayer.strokeColor = UIColor.white.cgColor
layer.addSublayer(borderLayer)

Результат имеет проблемы ширины в углах:

enter image description here

1 Ответ

0 голосов
/ 19 сентября 2018

Вставить на 1 пиксель или установить clipsToBounds = false в вашем UIView.

let insetBounds = bounds.insetBy(dx: 1.0, dy: 1.0)
borderLayer.path = UIBezierPath(roundedRect: insetBounds, byRoundingCorners: [.topRight, .bottomLeft, .bottomRight], cornerRadii: CGSize(width: 24, height: 24)).cgPath
...