- (CGFloat)maxDurationOfEffectAnimation:(CAAnimationGroup*)anim sublayersCount:(NSInteger)count{
CGFloat maxDuration = 0;
if ([anim isKindOfClass:[CAAnimationGroup class]]) {
for (CABasicAnimation *subAnim in anim.animations) {
CGFloat instanceDelay  = [[subAnim valueForKey:@"instanceDelay"] floatValue];
CGFloat delay = instanceDelay * (CGFloat)(count - 1);
CGFloat repeatCountDuration = 0;
if (subAnim.repeatCount >1) {
repeatCountDuration = (subAnim.duration * (subAnim.repeatCount-1));
}

CGFloat duration = subAnim.beginTime + (subAnim.autoreverses ? subAnim.duration : 0) + (delay + subAnim.duration + repeatCountDuration);
maxDuration = MAX(duration, maxDuration);
}
}
if (maxDuration == INFINITY) {
maxDuration = 1000.0f;
}
return maxDuration;
}
