我有一个 UIScrollView,其内容大小为 1200x480。我上面有一些图像视图,其宽度加起来为 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 从未被调用。内容尺寸较大的滚动视图是否无法放大?
这里有一些方法。只需使用网站搜索...
如果您想要 Apple 创建的更“官方”示例,请查看StreetScroller 演示。有关此示例的更多信息,请查看去年的 WWDC 会议。 104高级滚动视图技术.
Github 上还有一个 UIScrollView 子类,名为BAGPagingScrollView,这是分页和无限的,但它有一些错误你必须自己修复,因为它没有在积极开发中(尤其是goToPage:
方法会导致问题)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)