Как изменить начальную или опорную точку анимации с помощью pop или CoreAnimation
Следующий код запускает масштабную анимацию и расширяется вдоль XY от центра UIButton
, Как сделать так, чтобы это начиналось слева или frame.origin.x = 0
POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds];
anim.fromValue = [NSValue valueWithCGRect:CGRectMake(signupButton.frame.origin.x,
signupButton.frame.origin.y,
0,
signupButton.frame.size.height)];
anim.toValue = [NSValue valueWithCGRect:signupButton.frame];
[anim setValue:@"progressBar" forKey:@"animName"];
anim.delegate = self;
// I tried to set anchor point but without any luck
// signupButton.layer.anchorPoint = CGPointMake(150, signupButton.frame.origin.y);
[signupButton.layer pop_addAnimation:anim forKey:@"signupButton"];
1 ответ
Вы анимируете границы, но проходите в кадре. Вы правы в желании оживить границы.
Итак, я думаю, что это будет правильный код.
POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds];
CGRect startRect = signupButton.layer.bounds;
startRect.size.width = 0.0;
anim.fromValue = [NSValue valueWithCGRect:startRect];
anim.toValue = [NSValue valueWithCGRect:signupButton.layer.bounds];
[anim setValue:@"progressBar" forKey:@"animName"];
anim.delegate = self;
//anchor on the center left
CGPoint center = signupButton.layer.position;
signupButton.layer.anchorPoint = CGPointMake(0, 0.5);
signupButton.layer.position = CGPointMake(center.x - signupButton.layer.bounds.size.width * 0.5, center.y);
[signupButton.layer pop_addAnimation:anim forKey:@"signupButton"];