Я пытаюсь сделать простую анимацию, используя Core Animation, чтобы нарисовать простую полосу, которая растет. Как индикатор выполнения.
Итак, полоса начинается с x = 0 с шириной 0 и увеличивается по размеру рамки.
Но, когда я анимирую bounds.size.width, исходная точка считается центром слоя, и она растёт наружу в обоих направлениях x, тогда как я хочу, чтобы крайняя левая точка полосы всегда была 0 правее всего изменить анимацию - опять же, как индикатор выполнения.
Нужно ли анимировать дополнительное свойство или есть что-то, кроме bounds.size.width, которое я должен использовать для достижения этой цели?
Для справки, вот что у меня сейчас:
CABasicAnimation * animation;
animation = [CABasicAnimation animationWithKeyPath:@"bounds.size.width"];
animation.fromValue = [NSNumber numberWithInt:0];
animation.toValue = [NSNumber numberWithInt:(self.frame.size.width / 2)];
[animation setValue:@"primary_on" forKey:@"animation_key"];
animation.duration = duration;
[primaryMask addAnimation:animation forKey:@"primary_on"];
(основная маска - это CALayer)
То же самое происходит в этом сценарии:
animation = [CABasicAnimation animationWithKeyPath:@"bounds"];
CGRect oldBounds = CGRectMake(0, 0, 0, self.frame.size.height);
CGRect newBounds = CGRectMake(0, 0, self.frame.size.width / 2, self.frame.size.height);
animation.fromValue = [NSValue valueWithCGRect:oldBounds];
animation.toValue = [NSValue valueWithCGRect:newBounds];