5

我有一个内容大小为 1200x480 的 UIScrollView。我有一些图像视图,其宽度加起来为 600。当向右滚动时,我只需增加内容大小并设置偏移量以使一切顺利(然后我想添加其他图像,但这并不重要马上)。所以基本上,当前在视口中的图像保留在左侧的某个位置,最终会从超级视图中删除。

现在,我在向左滚动时发生的问题。我所做的是将图像移动到内容大小的末尾(因此将 600 添加到每个图像视图的 origin.x),然后相应地设置内容偏移量。当手指在屏幕上并且用户拖动时它起作用(scrollView.isTracking = YES)。当用户向左滚动并松开时(scrollView.isTracking = NO),图像视图最终向右移动得太快并且几乎立即消失。有谁知道即使用户没有手动拖动视图并且已经放手,我如何才能让图像很好地移动并且不会消失?

这是我水平拖动的代码:

-(void) scrollViewDidScroll:(UIScrollView *)scrollView {
    CGPoint offset = self.scrollView.contentOffset;
    CGSize size = self.scrollView.contentSize;

    CGPoint newXY = CGPointMake(size.width-600, size.height-480);

    // this bit here allows scrolling towards the right
    if (offset.x > size.width - 320) {
        [self.scrollView setContentSize:CGSizeMake(size.width+320, size.height)];
        [self.scrollView setContentOffset: offset];
    }

    // and this is where my problem is:
    if (offset.x < 0) {
        for (UIImageView *imageView in self.scrollView.subviews) {
            CGRect frame = imageView.frame;
            [imageView setFrame:CGRectMake
                (frame.origin.x+newXY.x, frame.origin.y, 200, frame.size.height)];
        }
        [self.scrollView setContentOffset:CGPointMake(newXY.x+offset.x, offset.y)];
    } 
}

编辑:现在可以正常工作了-我查看了 StreetScroller,现在一切都很好。

但是,我现在想放大滚动视图,但永远不会调用 viewForZoomingInScrollView。是否无法放大内容大小较大的滚动视图?

4

1 回答 1

5

这里有一些方法。只需使用网站搜索...</p>

如果您想要 Apple 创建的更“官方”示例,请查看StreetScroller Demo。有关此示例的更多信息,请查看去年的 WWDC 会议编号。104高级滚动查看技术

Github 上还有一个 UIScrollView 子类,叫做BAGPagingScrollView,它是分页和无限的,但是它有一些你必须自己修复的错误,因为它不是在积极开发中(尤其是goToPage:方法会导致问题)。

于 2012-02-25T14:31:13.280 回答