Как изменить начальную или опорную точку анимации с помощью 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"];
Другие вопросы по тегам