tôi có hai hình ảnh động xoay trong CAAnimationGroup
của tôi, người ta bắt đầu từ con số không và khác mà lặp đi lặp lại và autoreverses từ trạng thái đó:Giá trị thời lượng tối đa (CFTimeInterval) cho Nhóm CAAnimation là gì?
- (void)addWobbleAnimationToView:(UIView *)view amount:(float)amount speed:(float)speed
{
NSMutableArray *anims = [NSMutableArray array];
// initial wobble
CABasicAnimation *startWobble = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
startWobble.toValue = [NSNumber numberWithFloat:-amount];
startWobble.duration = speed/2.0;
startWobble.beginTime = 0;
startWobble.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[anims addObject:startWobble];
// rest of wobble
CABasicAnimation *wobbleAnim = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
wobbleAnim.fromValue = [NSNumber numberWithFloat:-amount];
wobbleAnim.toValue = [NSNumber numberWithFloat:amount];
wobbleAnim.duration = speed;
wobbleAnim.beginTime = speed/2.0;
wobbleAnim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
wobbleAnim.autoreverses = YES;
wobbleAnim.repeatCount = INFINITY;
[anims addObject:wobbleAnim];
CAAnimationGroup *wobbleGroup = [CAAnimationGroup animation];
wobbleGroup.duration = DBL_MAX; // this stops it from working
wobbleGroup.animations = anims;
[view.layer addAnimation:wobbleGroup forKey:@"wobble"];
}
Kể từ CFTimeInterval được định nghĩa là một đôi, tôi cố gắng thiết lập thời gian của nhóm hoạt hình đến DBL_MAX
, nhưng điều đó ngăn chặn hoạt ảnh của nhóm hoạt động. Tuy nhiên, nếu tôi đặt nó thành một số lớn, chẳng hạn như 10000, nó chạy tốt. Số lớn nhất mà tôi có thể sử dụng trong khoảng thời gian CAAnimationGroup
là gì, để đảm bảo nó có thể hoạt động gần như vô cùng nhất có thể?
CẬP NHẬT: Có vẻ như nếu tôi đặt một giá trị rất lớn như DBL_MAX/4.0
thì nó sẽ đóng băng trong một giây, sau đó bắt đầu hoạt ảnh. Nếu tôi đặt giá trị DBL_MAX/20.0
thì đóng băng lúc đầu sẽ nhỏ hơn rất nhiều. Dường như có một giá trị lớn như vậy trong thời gian này khiến nó bị đóng băng. Có cách nào tốt hơn để làm điều này khác hơn là sử dụng một giá trị rất lớn cho thời gian?
Bạn đang cố gắng làm cho nhóm hoạt ảnh này lặp lại mãi mãi? –
vâng, nhưng tôi chỉ muốn phần thứ hai của nhóm lặp lại mãi mãi. – jowie
Bạn có chắc là bạn cần đặt thời lượng không? Điều gì sẽ xảy ra nếu bạn bỏ nó? –