gpt4 book ai didi

ios - 根据 UIProgressView 状态同步描边填充动画?

转载 作者:行者123 更新时间:2023-11-29 05:48:00 33 4
gpt4 key购买 nike

目前,我们有一个工作正常的圆形进度条,出于测试目的,它是通过点击手势激活的。

 func createCircleShapeLayer() {
let center = view.center
if UIDevice.current.userInterfaceIdiom == .pad {
let circlePath = UIBezierPath(arcCenter: center, radius: 150, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)
circleShapeLayer.path = circlePath.cgPath
} else {
let circlePath = UIBezierPath(arcCenter: center, radius: 100, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)
circleShapeLayer.path = circlePath.cgPath
}
circleShapeLayer.strokeColor = UIColor.green.cgColor
circleShapeLayer.lineWidth = 20
circleShapeLayer.fillColor = UIColor.clear.cgColor
circleShapeLayer.lineCap = CAShapeLayerLineCap.round
circleShapeLayer.strokeEnd = 0
view.layer.addSublayer(circleShapeLayer)

//tap gesture used for animation testing
view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(anitmateCirleProgress)))
}

@objc func anitmateCirleProgress() {
let strokeAnimation = CABasicAnimation(keyPath: strokeEnd)
strokeAnimation.toValue = 1
strokeAnimation.duration = 2
strokeAnimation.fillMode = .forwards
strokeAnimation.isRemovedOnCompletion = false
circleShapeLayer.add(strokeAnimation, forKey: "strokeAnimation")
}

问题是进度条必须能够根据 UIProgressView 的状态填充:例如。

totalProgressView.setProgress(45, animated: true)

有没有办法根据 UIProgressView 的进度同步动画笔画?

最佳答案

我认为 UIProgressView 的进度值从 0 到 1?如果是这样,将进度 View 设置为 45 的示例代码就没有意义。

UIProgressView 和形状图层的中风结束都使用 0 到 1 之间的值,因此您应该能够将进度 View 和自定义形状图层的中风结束设置为相同的小数值并获取它们两者都显示相同的完成量。

关于ios - 根据 UIProgressView 状态同步描边填充动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55959581/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com