Как анимировать endAngle UIBezierPath в UIKit, например SwiftUI ⇐ IOS
Как анимировать endAngle UIBezierPath в UIKit, например SwiftUI
Мне нужно создать плавную анимацию endAngle в UIKit, например animatableData + endAngle в SwiftUI
Я сделал что-то вроде таймера круговой диаграммы, мне нужно анимировать его свертывание. Я создал его с помощью UIBezierPath, но с помощью CABasicAnimation или UIViewAnimate я не могу анимировать его endAngle. Но я сделал это с помощью SwiftUI, используя animatableData внутри Shape и линейную анимацию. SwiftUI анимация Есть ли какие-нибудь варианты заставить его работать с UIKit?
Вот код, который я использую для рисования пирога:
частная функция getInnerTimerPiePathByPercent() -> CGPath { let radius: CGFloat = (min(bounds.size.width,bounds.size.height) - 34)/2 let fillPercent: CGFloat = 1 -clearSegmentPercent начнем: CGFloat = CGFloat.pi/2 * 3 let end = getEndAngleByPercent(filledPercent) пусть центр = CGPoint(x:bounds.size.width/2,y:bounds.size.height/2) пусть bezierPath = UIBezierPath() bezierPath.move(в: центр) bezierPath.addArc(withCenter: центр, радиус: радиус, startAngle: начало, endAngle: конец, по часовой стрелке: ложь) bezierPath.addLine(в: центр) вернуть bezierPath.cgPath } частная функция getEndAngleByPercent (_ процентов: CGFloat) -> CGFloat { -CGFloat.pi * 2 * процент + CGFloat.pi / 2 * 3 } Вот код, который я использовал в анимации:
let анимация = CABasicAnimation(keyPath: "путь") анимация.длительность = 10 анимация.toValue = getInnerTimerPiePathByPercent (процент: 0) анимация.isRemovedOnCompletion = ложь InternalTimerPieShapeLayer?.add(анимация, forKey: ноль)
Мне нужно создать плавную анимацию endAngle в UIKit, например animatableData + endAngle в SwiftUI
Я сделал что-то вроде таймера круговой диаграммы, мне нужно анимировать его свертывание. Я создал его с помощью UIBezierPath, но с помощью CABasicAnimation или UIViewAnimate я не могу анимировать его endAngle. Но я сделал это с помощью SwiftUI, используя animatableData внутри Shape и линейную анимацию. SwiftUI анимация Есть ли какие-нибудь варианты заставить его работать с UIKit?
Вот код, который я использую для рисования пирога:
частная функция getInnerTimerPiePathByPercent() -> CGPath { let radius: CGFloat = (min(bounds.size.width,bounds.size.height) - 34)/2 let fillPercent: CGFloat = 1 -clearSegmentPercent начнем: CGFloat = CGFloat.pi/2 * 3 let end = getEndAngleByPercent(filledPercent) пусть центр = CGPoint(x:bounds.size.width/2,y:bounds.size.height/2) пусть bezierPath = UIBezierPath() bezierPath.move(в: центр) bezierPath.addArc(withCenter: центр, радиус: радиус, startAngle: начало, endAngle: конец, по часовой стрелке: ложь) bezierPath.addLine(в: центр) вернуть bezierPath.cgPath } частная функция getEndAngleByPercent (_ процентов: CGFloat) -> CGFloat { -CGFloat.pi * 2 * процент + CGFloat.pi / 2 * 3 } Вот код, который я использовал в анимации:
let анимация = CABasicAnimation(keyPath: "путь") анимация.длительность = 10 анимация.toValue = getInnerTimerPiePathByPercent (процент: 0) анимация.isRemovedOnCompletion = ложь InternalTimerPieShapeLayer?.add(анимация, forKey: ноль)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение