ios - 如何实现像Yahoo的APP News Digest这样的倒计时功能

标签 ios

countdonw gif
countdownView

我可以使用CAShapeLayerUIBezierPath画圆,也可以使用CAShapeLayer.strokeEnd这个属性来控制进度。但是路径和时间的快速滚动,我不知道如何实现。

现在我认为方法是计算两者之间的时间差,然后使用该时间差进行循环。

例如,两者之间的时间差为1000秒,是否应该将strokeEnd和Label的中间设置为1000个循环?还是实现了良好的效果?

提前致谢!

最佳答案

注意: StrokeEnd接受0 - 1 之间的值

说吧
在您的案例中,您可以看到圆圈代表了显示新Feed所需的剩余时间。假设 3PM。

因此下午3点将是您的nextFeedTime = 3PM
您在 12PM 获得了此供稿,因此在feedTime = 12PM处获得了此供稿。

所以现在您将拥有feedTime=12PM - nextFeedTime=3PM的开始和结束值

因此feedTime0strokeEnd,而nextFeedTime是StrokeEnd的1

当您打开应用程序时,您会得到currentTime,它最初是用feedTime初始化的,后来它会一直被当前时间戳替换。

假设currentTime1 PM

现在我们可以计算动画strockEnd属性的比率
strokeEnd = currentTime / nextFeedTime
并相应地为strokeEnd设置动画。希望这对您有帮助!

关于ios - 如何实现像Yahoo的APP News Digest这样的倒计时功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38522208/

相关文章:

ios - 在 shouldSetValue :atKeyPath restkit 中将 NSNull 值强制为零

ios - 从 SecKey 对象获取 EC 私钥 PEM 字符串

html - 在 UIWebView 中从 HTML 获取特定元素

ios - 如何使用c#在ios上发送通知

ios - 使用 MTKView 显示解码的视频流会导致不希望的模糊输出

iOS 10.0 UIRefreshControl 不显示指示器

ios - 如何在 iOS 应用程序中使用 Wordpress REST API?

ios - 在 FBLoginView 中制作按钮 touchUp

ios - UIActivityViewController 的短信窗口变得部分透明

ios - 从 NSArray 动态生成 NSPredicate