在滚动屏幕之前,UIScrollView +将项目置于顶部

时间:2013-10-08 18:24:08

标签: ios objective-c uiscrollview ios7

我正在复制一个Passbook / iOS7 Reminders界面,其中有一堆卡片堆叠在一起,偏移,因此卡片的顶部显示出来。有一个主要的scrollView,每个卡都作为子视图添加。

enter image description here

当用户向上滚动时,我希望最顶部的卡固定到顶部,因此1个堆叠在0上,2个堆叠在1上等等。

我使用我的scrollview的委托工作:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.y < 0) return;

    int offsetBetweenItems = 50;

    int indexForTopCard = (int)(scrollView.contentOffset.y / offsetBetweenItems);
    Card *card = self.cards[indexForTopCard];

    card.frame = CGRectMake(0, scrollView.contentOffset.y, card.frame.size.width, card.frame.size.height);
}

只要滚动平稳而缓慢,这实际上很有效。但是,当积极地向后滚动到顶部(0)卡时,堆叠会全部搞砸,我会失去统一的50px偏移量。

我认为这是因为我找到了indexForTopOfCard的卡片。如果我滚得太快,我无法保证我能够按顺序调整每张卡片,有时会完全跳过几张卡片。

确保每张卡都能按顺序进行调整的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用带有节的UITableView轻松实现此功能。