Utilizando correctamente CGAffineTransformMakeScale

Tengo un UIButton presentado usando storyboard. El button solo contiene una image. Cuando se hace clic en el button, quiero animar el tamaño del button: disminuir el tamaño y volver a llevarlo al tamaño original nuevamente.

Utilicé el siguiente código:

 [UIView animateWithDuration:2.0 animations:^{ _favButton.transform = CGAffineTransformMakeScale(0.5, 0.5); }completion:^(BOOL finished) { [UIView animateWithDuration:2.0 animations:^{ _favButton.transform = CGAffineTransformMakeScale(1, 1); }]; }]; 

Este código mueve mi button en la pantalla que no quiero. Quiero que se arregle el center del button y que el tamaño esté animado.

No he utilizado ninguna Top Constraint en el guión gráfico para el button. ¿Cómo puedo rectificar este comportamiento?

Si tiene el layout automático activado, deberá apagarlo.

Pero no parece su problema aquí según su descripción.

Haría lo siguiente para reajustar al centro a medida que escala:

 CGPoint cP = _favButton.center; [UIView animateWithDuration:2.0 animations:^ { _favButton.transform = CGAffineTransformMakeScale(0.5, 0.5); _favButton.layer.position = cp; } completion:^(BOOL finished) { [UIView animateWithDuration:2.0 animations:^ { _favButton.transform = CGAffineTransformMakeScale(1, 1); _favButton.layer.position = cp; }]; }]; 

Espero que esto ayude.

SWIFT 3

 button.transform = CGAffineTransform(scaleX: 0.1, y: 0.1)