¿Manera correcta de mover UIButton entre dos puntos?

Intenta hacer un pequeño juego de tapping, donde tienes una cuadrícula de cuadrados y necesitas tocarlos en diferentes órdenes. Ocasionalmente estos cuadrados intercambiarán lugares entre sí.

Me imagino que tendré que colocar las ubicaciones de cada cuadrado en una matriz. Luego, cuando sea el momento de moverse, vaya de la ubicación actual a una seleccionada al azar de la matriz, y luego elimine esa ubicación en la matriz para que no aparezca varios botones en el mismo lugar.

Desafortunadamente, ni siquiera puedo mover los UIButtons, y mucho menos interpolar entre dos posiciones.

Actualmente esto moverá un botón:

-(IBAction)button:(id)sender
{
    button.center = CGPointMake(200, 200);
}

Pero no quiero que funcione así, quiero que funcione algo como esto y no funciona:

if (allButtonsPressed == YES)
{
    button.center = CGPointMake(200, 200);
}

Ni siquiera se moverá si se coloca así:

-(void)viewDidLoad
{
    [super viewDidLoad];
    button.center = CGPointMake(200, 200);
}

Para mayor claridad, el botón se agrega a través de Interface Builder, y todas estas situaciones funcionan cuando se hacen otras cosas, así que supongo que los botones UIB se deben mover o animar de maneras específicas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta