【问题标题】:How to create an timeline on iPhone如何在 iPhone 上创建时间线
【发布时间】:2011-01-24 06:37:37
【问题描述】:
我正在尝试在我的 iPhone 应用程序中创建一个无限时间轴来滚动时间。我想我会使用 UIScrollView 来做到这一点,但我不知道该怎么做。
我是否应该从头开始创建一个可重用的视图队列,其中包含天/月/年的视图,并在它们离开屏幕时重用它们? (我想到了表格视图中的可重用单元格)。
也许有更好的方法来做到这一点?
感谢您的帮助!
【问题讨论】:
标签:
iphone
cocoa-touch
uikit
uiscrollview
timeline
【解决方案1】:
好吧,UIScrollView 是有限的,所以你会在某一时刻到达终点。您当然可以四处移动(后退)物品,以确保您永远不会达到该限制。
您当然想要做一些缓存/分页 ala UITableView 以确保您只在内存中保留最少需要的视图。
如果你准备好了,可以问一个更具体的问题:-)
【解决方案2】:
据我所知,UIScrollView 从 3.0 开始就没有宽度限制了。但是,您不能使用它来显示大量数据,因为绘制它会花费太多时间,并且您的应用程序会运行缓慢。
您可以改用宽度 = 320.0 * 3 的 UIView。处理
- (void) touchesMoved: (NSSet*)_touches withEvent: (UIEvent*)_event
并申请
view.transform = CGAffineTransformMakeTranslation(-shift, 0.f);
可以根据从 touches 集中找到的 delta X 计算此处的移位。仿射平移允许模拟平滑运动。当用户松开手指 (touchesEnded) 时,用移动的内容重绘视图 (setNeedsDisplay) 并将其取回:
self.transform = CGAffineTransformIdentity;
不要在 touchesMoved 时执行 setNeedsDisplay,因为如果您正在绘制图表或计算某些东西,它会影响性能。
对于 2D 地图,您必须同时考虑 X 和 Y 并拥有 320*3 X 480*3 视图:)
这是一个有趣的任务。享受吧。