gpt4 book ai didi

objective-c - 无限水平滚动 UIScrollView

转载 作者:太空狗 更新时间:2023-10-30 03:52:10 26 4
gpt4 key购买 nike

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

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

这是我水平拖动的代码:

-(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,现在一切正常。

但是,我现在想放大 ScrollView ,但从未调用过 viewForZoomingInScrollView。内容大的scrollview不能放大吗?

最佳答案

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

如果您想要 Apple 创建的更“官方”示例,请查看 StreetScroller Demo .有关此示例的更多信息,请查看去年的 WWDC session no。 104 高级 ScrollView 技术

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

关于objective-c - 无限水平滚动 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9440230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com