我正在尝试在我的iPhone应用中创建一个inifite时间轴来滚动浏览时间。我想我将使用UIScrollView来做到这一点,但我不知道该怎么做。
我是否应该从头开始创建一个可重复使用的视图队列,其中包含日/月/年的视图,并在它们离开屏幕时重复使用它们? (我想到了tableviews中可重复使用的单元格)。
也许还有更好的方法吗? 谢谢你的帮助!
答案 0 :(得分:1)
据我所知,自3.0以来,UIScrollView没有宽度限制。然而,你不能用它来显示大量数据,因为它需要花费太多时间来绘制它,你的应用程序运行缓慢。
您可以使用宽度= 320.0 * 3的UIView。处理
- (void) touchesMoved: (NSSet*)_touches withEvent: (UIEvent*)_event
并申请
view.transform = CGAffineTransformMakeTranslation(-shift, 0.f);
此处的Shift可以根据从触摸设置中找到的delta X来计算。仿射翻译允许模仿平滑运动。当用户释放他们的手指(touchesEnded)时,使用移动的内容重绘您的视图(setNeedsDisplay)并将其取回:
self.transform = CGAffineTransformIdentity;
在touchesMoved时不要执行setNeedsDisplay,因为如果您正在绘制图形或计算某些内容,它会影响性能。
对于2D地图,您必须考虑X和Y并且具有320 * 3 X 480 * 3视图:)
这是一项有趣的任务。享受。
答案 1 :(得分:0)
嗯,UIScrollView
是有限的,所以你会在一点上达到目的。你当然可以移动物品(后面),以确保你永远不会达到这个限制。
您当然希望执行一些缓存/分页ala UITableView
,以确保只在内存中保留所需的最少视图。
如果您准备好了,请提出更具体的问题: - )