【问题标题】: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 视图:)

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

      【讨论】:

        猜你喜欢
        • 2021-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-18
        • 2010-10-05
        • 1970-01-01
        相关资源
        最近更新 更多