Tôi đang làm động một cánh tay đồng hồ từ hướng tới 12 giờ đến thời điểm hiện tại. Nếu nói, 11 giờ, tôi muốn cánh tay xoay theo chiều kim đồng hồ đến vị trí 11 giờ. Nhưng tất nhiên nếu tôi sử dụng:Xoay một chiều kim đồng hồ theo chiều kim đồng hồ cho một góc lớn hơn 180 độ
CGAffineTransform rotation = CGAffineTransformMakeRotation(2*M_PI*11/12);
[UIView animateWithDuration:3.0
animations:^{
clockArm.transform = rotation;
}];
vòng quay ngược chiều kim đồng hồ. Tôi đã thử:
CGFloat angle = 2*M_PI*11/12;
CGAffineTransform firstRotation = CGAffineTransformMakeRotation(M_PI-0.001);
CGFloat firstRotationTime = 3.0*(M_PI/angle);
CGAffineTransform secondRotation = CGAffineTransformMakeRotation(angle);
CGFloat secondRotationTime = 3.0 - firstRotationTime;
[UIView animateWithDuration:firstRotationTime
delay:0.0
options:UIViewAnimationCurveLinear
animations:^{
self.clockArm1.transform = firstRotation;
}
completion:^(BOOL finished) {
[UIView animateWithDuration:secondRotationTime
delay:0.0
options:UIViewAnimationCurveLinear
animations:^{
self.clockArm1.transform = secondRotation;
}
completion:^(BOOL finished){
}];
}];
Hoạt ảnh không hoạt động theo chiều kim đồng hồ, nhưng nó vẫn bị thay đổi - hoạt ảnh dường như vẫn đang hoạt ảnh đầu tiên. Tôi đang làm gì sai, hoặc có cách nào khác để hoàn thành những gì tôi muốn?
Hãy nhìn vào câu trả lời chấp nhận của http://stackoverflow.com/questions/9844925/uiview-infinite -360-degree-rotation-animation. cái đó có giúp ích không? –