我希望为iOS构建一个连续的视差滚动视图,它将充当tableView。我想要重新创建的内容与this page上显示的滚动非常相似。我已经看到很多“双视图”视差视图,但没有一个是连续的功能。
我知道这不是一个直接的问题,但我可以真正使用一些帮助设置正确的方向来做到这一点。
答案 0 :(得分:1)
有很多方法可以解决这个问题。
我可能不会使用表格视图,但我想首先看一下,我会使用UIScrollView
和2 UIImageViews
以及NSArray
张图片(取决于多少张图片)图像有。)
2个图像视图将在主view
上一个放在另一个上面,然后在它们的顶部,两个图像视图都将是滚动视图,其中没有任何内容。滚动视图仅用作控件。
根据将有多少“页面”(即屏幕高度乘以图像数量)设置滚动视图的内容大小。
在滚动视图中,委托方法-(void)scrollViewDidScroll:
获取滚动视图的当前偏移量。
您可以使用此偏移量来计算topImage
和bottomImage
(即它们来自NSArray
的索引)。
然后再次根据偏移更改顶部UIIMageView
的位置。
粗略代码
// create a topImageView and bottomImageView.
// set contentMode UIViewContentModeScaleAspectFill
// set clipsToBounds = YES
// place them both on self.view (bottom first)
// create a scrollView with a clear background.
// place it on the self.view.
// get the array of images.
// set the scrollView.contentSize = number of images * height of scrollView.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat percentageOffset = scrollView.contentOffset.y / CGRectGetHeight(scrollView.frame);
NSInteger topPage = floorf(percentageOffset);
CGFloat topPageOffset = percentageOffset - topPage;
// make sure that you're not going outside of the index bounds first!!!!
self.topImageView.image = self.images[topPage];
self.bottomImageView.image = self.images[topPage + 1];
// move the top image view so it looks like you are scrolling it.
self.topImageView.frame = CGRectOffset(self.view.bounds, -self.view.bounds.height * topPageOffset, 0);
}
这会给人一种印象,即您将顶部图像向上滑动并露出底部图像。它也会连续工作,所以如果你“轻弹”滚动视图,它会一个接一个地显示,直到滚动视图变慢并停止。
我认为这就是我接近它的方式。