0
ViewController
에 약 16,UIViews
의 프로젝트를 진행 중입니다. 다른 UIView
은 애니메이션 동안 장치를 가열하는 여러 연속 애니메이션 최적화
UIView
의 일부
CG
도면이 포함되어 있습니다. 특히 다음 회전 애니메이션이 계속 실행됩니다. (매우 자세히 보면 애니메이션이 부드럽게 보이지 않습니다.)
내가 테스트하고있는 장치는 예열 중이며 뜨겁지는 않지만 매우 따뜻합니다. 나는 프로세서에 오버로드가 걱정된다.
질문 :
지속적으로 적은 리소스를 배가하고 가열에서 장치를 방지하는 방법을 사용하여 실행 아래의 애니메이션을 완료하는 데 더 효율적인 방법이 있나요?
엑스 코드 악기 : 부하
(최대)CPU : 56 % - 메모리 : 29메가바이트
(최대) 러닝CPU를 1 % - 메모리 : 29MB
func rotateForward() {
UIView.animateWithDuration(2, delay: 0, options: .CurveLinear, animations: {() -> Void in
self.viewA.transform = CGAffineTransformRotate(self.viewA.transform, CGFloat(M_PI_2))
self.viewB.transform = CGAffineTransformRotate(self.viewB.transform, CGFloat(M_PI_2))
self.viewC.transform = CGAffineTransformRotate(self.viewC.transform, CGFloat(M_PI_2))
self.viewD.transform = CGAffineTransformRotate(self.viewD.transform, CGFloat(M_PI_2))
}) { (finished) -> Void in
self.rotateForward()
}
}
func rotateBack() {
UIView.animateWithDuration(2, delay: 0, options: .CurveLinear, animations: {() -> Void in
self.viewW.transform = CGAffineTransformRotate(self.viewW.transform, -CGFloat(M_PI_2))
self.viewX.transform = CGAffineTransformRotate(self.viewX.transform, -CGFloat(M_PI_2))
self.viewY.transform = CGAffineTransformRotate(self.viewY.transform, -CGFloat(M_PI_2))
self.viewZ.transform = CGAffineTransformRotate(self.viewZ.transform, -CGFloat(M_PI_2))
}) { (finished) -> Void in
self.rotateBack()
}
}
감사합니다. – user4806509
현재 CPU 사용량이 적습니까? 레이어 애니메이션은 CPU를 직접 사용하는 View 애니메이션과 달리 GPU를 직접 사용하여 애니메이션을 수행합니다. – unniverzal