Программируем под IOS
Гость
Круговой вид прогресса с внешним штрихом
Сообщение
Гость » 14 мар 2024, 12:51
Я пытаюсь создать круговое представление хода выполнения с обводкой снаружи. Но мой штрих начинается изнутри представления, а не снаружи, как граница. Как я могу решить эту проблему?
Мой код:
Код: Выделить всё
var progressLayer = CAShapeLayer()
var trackLayer = CAShapeLayer()
var progressLineWidth: CGFloat = 20
var progressColor = UIColor.green
var progress: Float = 0.5
let circlePath = UIBezierPath(arcCenter: CGPoint(x: frame.size.width / 2.0 - 2, y: frame.size.height / 2.0 - 2), radius: (frame.size.width) / 2, startAngle: -(.pi / 2), endAngle: .pi * 1.5, clockwise: true)
trackLayer.path = circlePath.cgPath
trackLayer.strokeColor = UIColor.gray.cgColor
trackLayer.lineWidth = 10
trackLayer.strokeEnd = 1.0
trackLayer.lineDashPattern = [4,4]
trackLayer.fillColor = UIColor.red.cgColor
layer.addSublayer(trackLayer)
progressLayer.path = circlePath.cgPath
progressLayer.fillColor = UIColor.clear.cgColor
progressLayer.strokeColor = progressColor.cgColor
progressLayer.lineWidth = progressLineWidth
progressLayer.strokeEnd = CGFloat(progress)
progressLayer.strokeStart = 0
progressLayer.lineDashPattern = [4,4]
layer.addSublayer(progressLayer)
Результат:
[img]
https://i . stack.imgur.com/NUJzT.png[/img]
Чего я хочу достичь:
Серые и зеленые штрихи должны начинаться с за пределами красного круга.
Источник:
https://stackoverflow.com/questions/781 ... ide-stroke
1710409919
Гость
Я пытаюсь создать круговое представление хода выполнения с обводкой снаружи. Но мой штрих начинается изнутри представления, а не снаружи, как граница. Как я могу решить эту проблему? [b]Мой код:[/b] [code]var progressLayer = CAShapeLayer() var trackLayer = CAShapeLayer() var progressLineWidth: CGFloat = 20 var progressColor = UIColor.green var progress: Float = 0.5 let circlePath = UIBezierPath(arcCenter: CGPoint(x: frame.size.width / 2.0 - 2, y: frame.size.height / 2.0 - 2), radius: (frame.size.width) / 2, startAngle: -(.pi / 2), endAngle: .pi * 1.5, clockwise: true) trackLayer.path = circlePath.cgPath trackLayer.strokeColor = UIColor.gray.cgColor trackLayer.lineWidth = 10 trackLayer.strokeEnd = 1.0 trackLayer.lineDashPattern = [4,4] trackLayer.fillColor = UIColor.red.cgColor layer.addSublayer(trackLayer) progressLayer.path = circlePath.cgPath progressLayer.fillColor = UIColor.clear.cgColor progressLayer.strokeColor = progressColor.cgColor progressLayer.lineWidth = progressLineWidth progressLayer.strokeEnd = CGFloat(progress) progressLayer.strokeStart = 0 progressLayer.lineDashPattern = [4,4] layer.addSublayer(progressLayer) [/code] [b]Результат:[/b] [img]https://i. stack.imgur.com/NUJzT.png[/img] [b]Чего я хочу достичь:[/b] [img]https://i.stack.imgur.com/1BqaZ.jpg[/img] [b]Серые и зеленые штрихи должны начинаться с за пределами красного круга.[/b] Источник: [url]https://stackoverflow.com/questions/78159221/circular-progress-view-with-outside-stroke[/url]