如何将对象移动到安排?

时间:2012-02-15 03:06:43

标签: iphone objective-c ios

每个人

我有一个问题,我想实现一个UI,就像iOS桌面一样,到目前为止我可以安排

通过以下代码

对象:

int k=0;
    int j;
    for (int i=0; i<[items count]; i++) {
       //k is row     
        j=i%3;
        if (j==0) {
            k++;
            if (k%3 == 1) {
                k = 1;
            }
        }
 [button setFrame:CGRectMake(25+(i%3*95), 35+((k-1)*140), 100, 100)]; 

所以,视图将如下所示

A B C
D E F
G H I

现在,让它进入编辑模式,在E和F之间拖动A drop

所以需要做很多事情

B和C将向左移动,D将在B C之后上升

E左移。(如何实现这些动画???)

B C D
E A F
G H I

我搜索Apple样本,我只找到Moveme这个样本,但它只有一个对象

任何建议或示例代码都会有很大帮助:)

谢谢

韦伯

1 个答案:

答案 0 :(得分:2)

当用户移动按钮时,您必须先找到它的新索引。

int j = (button.frame.origin.x - 25) / 95;
int k = (button.frame.origin.x - 35) / 140;
int newIndex = 3 * k + j;

然后你必须将它放在items数组中的那个索引处。

[items insertObject:button atIndex:newIndex];

然后你应该调用你提供的代码来重新定位按钮。

for (int i = 0; i < items.count; i++) {
    UIButton *button = (UIButton *)[items objectAtIndex:i];
    [UIView animateWithDuration:0.5 animations:^{
       button.frame = CGRectMake(25+(i%3)*95, 35+(i/3)*140, 100, 100); 
    }];
}