OneClock目前的三个表盘中用户最喜欢的是翻页时钟。翻页效果是表盘的核心,也是我花时间调试最久的细节。经过7次的产品迭代,终于调整到了一个合适的效果。

实现这个动效的方法只需用到CABasicAnimation中的以X轴旋转即可。CABasicAnimation实际上还有很多参数,比如大小、透明度、背景颜色等,用这个方法做很多动画都是可以实现的。

制作翻页时钟的效果,实际上需要解决3个问题:

1.只要时间刻度变动就提前翻页;

2.真实演示出翻页过程的遮盖和层级效果;

3.正确显示数字;

实现过程

将翻页的过程通过侧面角度,解析成下图中所示的样子。翻页的效果是从“上半页”翻转到“下半页”,为了让过程显得舒缓,我将翻页的过程设定为1.0秒。翻页过程耗时1.0秒,因此在真实时间到达某一秒钟时,需要判断下一秒是否需要翻页,如果翻页,就立刻执行翻页的过程。

翻页过程不需要改变最底层的X层和Y层,它们继续静态显示即可。以8点13分59秒为例,当判断下一秒为8点14分时,将立刻生成A层、B层、C层,分别在下图示意的位置。

A层、B层所显示的数字为当前的13,C层所显示的数字为下一秒的时间14,当然因为方向的问题C层翻转之后实际上是“下半层”。

一旦开始旋转,A层、B层、C层覆盖X层和Y层,此时的X层和Y层可以提前赋予他们下一秒的时间14。

随着不断翻转,0.5秒后,上半层露出下一个时间14,下半层仍然显示的是当前时间13。

0.5秒到1.0秒之间,C层会逐步在下半部显示,能够清晰地看到下一个数字为14。翻页1.0秒之后,时间刚好到达此刻的时间8点14分,A层、B层、C层的使命完成,立刻消失隐藏。X层和Y层提前1秒显示了正确的时间,翻页1.0秒后的时间刚好是我们所见到的正确时间8点14分。

如此,翻页过程结束。

小时的翻页和分钟的翻页实际上是一样的,只是小时翻页的过程伴随着分钟同时翻页,例如8点59分59秒的下一秒是9点00分,因此两个翻页将同时进行,而基本原理是一样的。

相关代码

在我的代码实现中,「翻页时钟」和「检测时间」两个函数是分开独立的,因此时钟、分钟甚至秒钟都可以单独执行翻页。

翻页函数:

func rotation(A:UIView,B:UIView,C:UIView){A.alpha = 1B.alpha = 1C.alpha = 1rotationFirst(view: B)//本文中提到的B,显示13rotationSecond(view: C)//本文中提到的C,显示14self.perform(#selector(self.initializeABC),with: nil, afterDelay: 0.9) //最后为了过度顺利,提前0.1秒让A/B/C小时//initializeABC函数设置A/B/C隐藏}
func rotationFirst(view:UIView){//旧值标签,先出来 let animation = CABasicAnimation(keyPath: "transform.rotation.x")animation.fromValue = (-10/360)*Double.pianimation.toValue = (-355/360)*Double.pianimation.duration = 1.0animation.repeatCount = 0animation.delegate = selfas? CAAnimationDelegateview.layer.add(animation, forKey: "rotationSecond")view.alpha = 1}
func rotationSecond(view:UIView) {//新值标签,后 let animation = CABasicAnimation(keyPath: "transform.rotation.x")animation.fromValue = (355/360) * Double.pianimation.toValue = (10/360) * Double.pianimation.duration = 1.0animation.repeatCount = 0animation.delegate = self as? CAAnimationDelegateview.layer.add(animation, forKey: "rotationFirst")view.alpha = 1}

【ios学习】OneClock的翻页时钟效果是如何实现的相关推荐

  1. android sdio 时钟 ios-clock,【ios学习】OneClock的翻页时钟效果是如何实现的

    OneClock目前的三个表盘中用户最喜欢的是翻页时钟.翻页效果是表盘的核心,也是我花时间调试最久的细节.经过7次的产品迭代,终于调整到了一个合适的效果. 实现这个动效的方法只需用到CABasicAn ...

  2. OneClock的翻页时钟效果是如何实现的

    OneSwift - iOS Tips Based On Swift OneClock目前的三个表盘中用户最喜欢的是翻页时钟.翻页效果是表盘的核心,也是我花时间调试最久的细节.经过7次的产品迭代,终于 ...

  3. OneClock 不息屏的极简时钟,不仅仅是翻页时钟那么简单!

    OneClock Mac时钟软件包括翻页时钟.数字时钟.表盘时钟,更多表盘三种样式.支持黑色和白色主题切换.透明度设置等设计. 不仅仅适配Mac 在iOS设备上,限于苹果并未开放任何屏保时钟.桌面时钟 ...

  4. OneClock - 不仅仅是桌面极简翻页时钟

    OneClock 中文版是mac上一款翻页时钟与极简时钟的屏幕时钟应用.目前包括翻页时钟.数字时钟.表盘时钟,更多表盘三种样式.支持黑色和白色主题切换.透明度设置.设置为桌面动态时钟和屏幕保护程序.支 ...

  5. creator 数字翻页效果_用好这款Fliqlo翻页时钟屏保让你电脑瞬间提升逼格和幸福感!...

    ?本文共计:2088字·⏰阅读时长:6分钟 ?目录预览 -------------- ① 电脑屏幕保护有啥? ② Fliqlo的基本介绍 ③ Fliqlo不同系统的使用教程 + Mac OS系统的使用 ...

  6. android 日历翻页动画,Android 仿日历翻页、仿htc时钟翻页、数字翻页切换效果

    废话不多说,效果图: 自定义控件找自网络,使用相对简单,具体还没有来得及深入研究,只是先用笨方法大概实现了想要的效果,后续有空会仔细研究再更新文章, 本demo切换方法是用的笨方法,也就是由新数字和旧 ...

  7. mac屏保时钟_OneClock 不息屏的极简时钟,不仅仅是翻页时钟那么简单!

    OneClock Mac时钟软件包括翻页时钟.数字时钟.表盘时钟,更多表盘三种样式.支持黑色和白色主题切换.透明度设置等设计. 不仅仅适配Mac 在iOS设备上,限于苹果并未开放任何屏保时钟.桌面时钟 ...

  8. 买不起时钟的我,为自己写个翻页时钟

    买不起时钟的我,为自己写个翻页时钟 为了提高自己的时间观念,我决定为自己配一个时钟,迷上了翻页时钟,但是发现翻页时钟软件都是付费的,再就是达不到自己的要求,于是决定为自己写个.看似简单,实则非易.为自 ...

  9. 全屏时钟软件Linux,翻页时钟下载-翻页时钟安卓版下载v1.2.3-Linux公社

    翻页时钟中有很丰富的时钟样式可以供用户随心切换,这上面的时间也是十分的准确哦,支持横屏.竖屏两种方式展现,更有酷炫的背景等着用户来更换,也能够自定义喜欢的图片进行背景设置,非常人性化的功能,翻页时钟中 ...

最新文章

  1. mac 不显示 外接屏幕_苹果笔记本A1707电脑屏幕不显示,主板进水腐蚀,一招秒杀...
  2. TDD测试驱动开发过程
  3. 排序二叉树BST(binary search/sort tree)
  4. java 方块_哈工大java实验 移动小方块
  5. java实现rsa欧几里得算法求d_RSA算法中利用欧几里得算法求d详细过程
  6. 【英语学习】【Level 07】U08 Old Stories L2 A good read
  7. asp.net mvc项目中遇到的古怪的问题,(项目中有frame框架)
  8. 深入剖析SolrCloud(四)
  9. 微型计算机工作适宜的温度,应用电脑(1)第一章 第一节 计算机的基本组成...
  10. UE4 粒子特效基础学习 (02-光晕效果制作)
  11. java毕业设计电影票网上订票系统Mybatis+系统+数据库+调试部署
  12. 中兴新支点操作系统_QQ Linux版重磅回归,完美适配中兴新支点操作系统,快来使用吧...
  13. rust自我解脱_如何从婚姻的痛苦中自我解脱?
  14. 笔记本计算机在桌面显示器,笔记本连接显示器
  15. 有哪些好用的渲染软件?12个业内顶级渲染软件推荐
  16. Win11如何设置系统还原点?
  17. 洛谷P1378 油滴扩展
  18. 理解Intel cpufreq intel_pstate driver的工作模式
  19. Allegro-PCB导出DXF文件
  20. P6跨级晋升P8再到P10,我的11年成长之路

热门文章

  1. 基于TCP的QQ聊天工具
  2. 聚丙烯酰胺凝胶电泳检测非还原性SDS-PAGE蛋白质产品的纯度
  3. 用 SolidWorks方程式画:渐开线直齿内齿轮
  4. 前端小白分享|canvas用户上传图片选择相框并长按保存到本地
  5. 显卡温度过高怎么办,解决显卡温度过高办法?
  6. 轻松做性能测试,月入3万的主流测试工具 大 揭 秘
  7. 定义自己的地图——使用mapabc api
  8. 【伺服电机/舵机与Arduino使用教程】
  9. 范畴论 Kleisli范畴
  10. buuctf web had a bad day