首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动画过程中的CPU效率

动画过程中的CPU效率
EN

Stack Overflow用户
提问于 2020-04-26 21:10:39
回答 1查看 142关注 0票数 0

使用Swift5.2、iOS13.4、

我尝试用秒针、分针和时针来模拟时钟。

时钟的完整示例可以在这里找到:Link(这是我使用的完整示例:Example Clock

一切正常-除了我的iPhone由于在角度计算或角度动画中的低CPU效率而变热。

我发现下面的角度动画是iPhone预热的原因。

我如何改进我的代码,使其CPU效率更高?

以下是角度计算代码:

代码语言:javascript
复制
public struct LocalTime {
    var hour: Double = 10.0
    var minute: Double = 10.0
    var second: Int = 25
}

let translateToRadian: CGFloat = CGFloat(Double.pi/180.0)

以下是计时器内每隔1秒计算一次的结果:

代码语言:javascript
复制
secondHand.updateHandAngle(angle: CGFloat(localTime.second * 6) * translateToRadian, duration: 1.0, options: .curveLinear)
minuteHand.updateHandAngle(angle: CGFloat(localTime.minute * 6) * translateToRadian, duration: 0.5, options: .curveEaseInOut)
hourHand.updateHandAngle(angle: CGFloat(localTime.hour * 30) * translateToRadian, duration: 0.5, options: .curveEaseInOut)

下面是updateAngle方法:

代码语言:javascript
复制
func updateHandAngle(angle: CGFloat, duration: Double, options: UIView.AnimationOptions) {
    UIView.animate(withDuration: duration,
                          delay: 0.0,
                        options: options,
                     animations: { self.transform = CGAffineTransform(rotationAngle: angle) },
                     completion: { (finished: Bool) in return }
    )
}
EN

回答 1

Stack Overflow用户

发布于 2020-04-27 06:01:57

假设“分钟”和“小时”返回一个整数,似乎分针仅每分钟改变一次,而时针仅每小时改变一次。因此,仅在需要时才将手设置为新位置,这样CPU使用量就会减少三分之一。

或者,如果每秒钟将分钟指针移动一点,则任何动画都将不可见。(看看机械表的分针。它在移动,但你看不到它在移动)。所以你根本不需要动画,想想你想要多长时间更新一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61441370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档