2012-02-15 36 views
0

大家如何將物體移動到排列?

我有一個問題,我想實現一個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

0之間的壓降

所以有很多事情需要做

B和C會左移,d將BC之後上去

ê左移。(如何實現這些動畫???)

B C D 
E A F 
G H I 

我搜索蘋果樣品,我只覺得這MoveMe的樣本,但它只有一個對象

任何建議或示例代碼將是很大的幫助:)

感謝

韋伯

回答

2

當用戶移動的按鈕,你必須要找到它的第一個新的索引。

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

然後,你必須把它放在項目數組中的索引。

[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); 
    }]; 
} 
+0

不確定你的意思,我會嘗試你的代碼:) 我怎麼知道哪個按鈕被修改? – 2012-02-15 03:41:41

+0

好的,它列出了帶有動畫的項目,現在我需要移動對象。 – 2012-02-15 03:51:31

+0

數學可能不正確,我沒有測試它。但是你明白了我希望的想法。 – sch 2012-02-15 03:58:42