0

我正在复制一个 Passbook/iOS7 提醒界面,其中有一堆堆叠在一起的卡片,偏移以便卡片的顶部显示出来。有一个主滚动视图,每张卡片都添加为子视图。

在此处输入图像描述

当用户向上滚动时,我希望最上面的卡片固定在顶部,所以 1 堆叠在 0 上,2 堆叠在 1 上,等等。

我使用我的滚动视图的委托让它工作:

- (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. 如果我滚动得太快,则无法保证我能够按顺序调整每张卡片,有时会完全跳过几张卡片。

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

4

1 回答 1

0

您可以使用带有部分的 UITableView 轻松实现这一点。

于 2017-04-24T16:13:16.983 回答