我可以使用CAShapeLayer
和UIBezierPath
画圆,也可以使用CAShapeLayer.strokeEnd
这个属性来控制进度。但是路径和时间的快速滚动,我不知道如何实现。
现在我认为方法是计算两者之间的时间差,然后使用该时间差进行循环。
例如,两者之间的时间差为1000秒,是否应该将strokeEnd和Label的中间设置为1000个循环?还是实现了良好的效果?
提前致谢!
最佳答案
注意: StrokeEnd接受0 - 1
之间的值
说吧
在您的案例中,您可以看到圆圈代表了显示新Feed所需的剩余时间。假设 3PM。
因此下午3点将是您的nextFeedTime = 3PM
,
您在 12PM 获得了此供稿,因此在feedTime = 12PM
处获得了此供稿。
所以现在您将拥有feedTime=12PM - nextFeedTime=3PM
的开始和结束值
因此feedTime
是0
的strokeEnd
,而nextFeedTime
是StrokeEnd的1
。
当您打开应用程序时,您会得到currentTime
,它最初是用feedTime
初始化的,后来它会一直被当前时间戳替换。
假设currentTime
是1 PM
。
现在我们可以计算动画strockEnd
属性的比率strokeEnd = currentTime / nextFeedTime
并相应地为strokeEnd设置动画。希望这对您有帮助!