iOS代码引起的发烫发热问题
2020-04-30 本文已影响0人
小明2021
前几天用户反映,观看视频,手机发烫严重,后来各种查原因,最后把视频框架更换了,发现还是发烫,这才意识到并不是看视频引起的。
果然进入到某一个页面引起的。下面是查找方案,分享给大家:
方法是通过 comment + i 调出: Instrument --- Time Profiler 找到可疑的代码。通常占用资源为:90%以上的代码是很可疑的。
通常工具并不能定位到具体的代码位置,需要根据经验和工具的提示,找出具体的页面和代码位置.
下面是最终出问题的代码:
发烫的原因是: UIView的循环动画必须在当前页面才行,否则发烫的严重。定时器目前看来还行没这个发烫的问题。
/// 云的动画
func cloudAnimationAction() {
// 必须判断是在当前页面,否则就发烫,特别是多个页面都有类似的动画。
if !(ToolOC.getCurrentVC()?.isKind(of: JieListVC.self) ?? false) {
return // 没这个判断的话,进入其他页面也会执行下面的动画,就会发烫。
}
var longTime: TimeInterval = 30.0
if self.smallCloudImgV.left != kScreenWidth_XMS/2.0 {
self.smallCloudImgV.frame = CGRect.init(x: kScreenWidth_XMS, y: kNavigationbarHeight_XMS, width: 62, height: 24)
} else {
longTime = 18.0
}
// 小的慢
UIView.animate(withDuration: longTime, delay: 0, options: UIView.AnimationOptions.curveEaseIn, animations: {
self.smallCloudImgV.frame = CGRect.init(x: -62, y: kNavigationbarHeight_XMS, width: 62, height: 24)
}) { (finish) in
self.cloudAnimationAction()
}
}