Se ho una griglia di rettangoli e sposto uno dei rettangoli, diciamo sopra e alla sinistra di un altro rettangolo, come potrei ricorrere ai rettangoli?
Nota che i rettangoli sono in una matrice, quindi ogni rettangolo ha un indice e un tag corrispondente. Tutto quello che devo veramente fare è impostare l'indice corretto in base alla nuova posizione del punto centrale del rettangolo all'interno del rettangolo, rispetto alla posizione del punto centrale degli altri rettangoli nella griglia. Ecco cosa sto facendo ora in pseudo codice (funziona in qualche modo, ma non è accurato):
-(void)sortViews:myView {
int newIndex;
// myView is the view that was moved.
[viewsArray removeObject:myView];
[viewsArray enumerate:obj*view]{
if (myView.center.x > view.center.x) {
if (myView.center.y > view.center.y) {
newIndex = view.tag -1;
*stop = YES;
} else {
newIndex = view.tag +1;
*stop = YES;
}
} else if (myView.center.x < view.center.x) {
if (myView.center.y > view.center.y) {
newIndex = view.tag -1;
*stop = YES;
} else {
newIndex = view.tag +1;
*stop = YES;
}
}
}];
if (newIndex < 0) {
newIndex = 0;
} else if (newIndex > 5) {
newIndex = 5;
}
[viewsArray insertObject:myView atIndex:newIndex];
[self arrangeGrid];
}