每个人
我有一个问题,我想实现一个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这个样本,但它只有一个对象
任何建议或示例代码都会有很大帮助:)
谢谢
韦伯
答案 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);
}];
}