我正在尝试在我的 iPhone 应用程序中创建一个无限时间线来滚动时间。我想我将使用 UIScrollView 来做到这一点,但我不知道该怎么做。
我是否应该从头开始创建一个可重用的视图队列,其中包含天/月/年的视图,并在它们离开屏幕时重用它们?(我想到了表格视图中的可重用单元格)。
也许有更好的方法来做到这一点?谢谢你的帮助 !
我正在尝试在我的 iPhone 应用程序中创建一个无限时间线来滚动时间。我想我将使用 UIScrollView 来做到这一点,但我不知道该怎么做。
我是否应该从头开始创建一个可重用的视图队列,其中包含天/月/年的视图,并在它们离开屏幕时重用它们?(我想到了表格视图中的可重用单元格)。
也许有更好的方法来做到这一点?谢谢你的帮助 !
据我所知,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 视图 :)
这是一个有趣的任务。享受。
嗯,UIScrollView
是有限的,所以你会在某一时刻到达终点。您当然可以四处移动(后退)物品,以确保您永远不会达到该限制。
您当然想要做一些缓存/分页 alaUITableView
以确保您只在内存中保留最少需要的视图。
如果你准备好了,问一个更具体的问题:-)