这有点令人费解,但我认为有一种非常简单有效的方法可以做到这一点。
在我的应用程序中,我在网格中布置了视图。可以通过手势将视图移动到任何位置。问题是在手势事件之后使视图排序到正确的位置。基本上我正在这样做。有点工作,但还不正确。
注意:视图的标签将始终更新到网格中视图的当前位置。
下面是我用来排序的代码,这里是zip 文件中实际项目的链接。
-(void)sortViews:(UIView*)myView {
__block int newIndex;
// myView is the view that was moved.
[viewsArray removeObject:myView];
[viewsArray enumerateObjectsUsingBlock:^(UIView *view, NSUInteger idx, BOOL *stop){
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];
[UIView animateWithDuration:.4 animations:^{
[self arrangeGrid];
}];
}