2

我正在尝试在我的 iPhone 应用程序中创建一个无限时间线来滚动时间。我想我将使用 UIScrollView 来做到这一点,但我不知道该怎么做。

我是否应该从头开始创建一个可重用的视图队列,其中包含天/月/年的视图,并在它们离开屏幕时重用它们?(我想到了表格视图中的可重用单元格)。

也许有更好的方法来做到这一点?谢谢你的帮助 !

4

2 回答 2

1

据我所知,UIScrollView 从 3.0 开始就没有宽度限制了。但是,您不能使用它来显示大量数据,因为绘制它会花费太多时间并且您的应用程序会运行缓慢。

您可以改用宽度 = 320.0 * 3 的 UIView。处理

- (void) touchesMoved: (NSSet*)_touches withEvent: (UIEvent*)_event

并申请

view.transform = CGAffineTransformMakeTranslation(-shift, 0.f);

可以根据从 touches 集中找到的 delta X 计算此处的 Shift。仿射平移允许模拟平滑运动。当用户松开手指 (touchesEnded) 时,重新绘制您的视图 (setNeedsDisplay) 并移动内容并将其取回:

self.transform = CGAffineTransformIdentity;

不要在 touchesMoved 时执行 setNeedsDisplay,因为如果您正在绘制图形或计算某些东西,它会影响性能。

对于 2D 地图,您必须同时考虑 X 和 Y 并拥有 320*3 X 480*3 视图 :)

这是一个有趣的任务。享受。

于 2010-03-06T09:14:50.843 回答
0

嗯,UIScrollView是有限的,所以你会在某一时刻到达终点。您当然可以四处移动(后退)物品,以确保您永远不会达到该限制。

您当然想要做一些缓存/分页 alaUITableView以确保您只在内存中保留最少需要的视图。

如果你准备好了,问一个更具体的问题:-)

于 2010-03-05T20:39:28.867 回答