Iphone 有关为图表创建自定义视图布局的提示

Iphone 有关为图表创建自定义视图布局的提示,iphone,cocoa-touch,core-graphics,Iphone,Cocoa Touch,Core Graphics,我需要创建一个算法来布局一些分层数据,但以前从未做过这种事情,需要一些广泛的技巧 基本上,我需要重新创建此图表(使用动态数据): 我对它的大部分都没有问题,但在两件事上需要帮助: 如何编写布局算法 我应该为所有光盘使用UIView子类还是使用quartz(我确实需要交互) 欢迎提出任何建议。我不需要太多细节 更详细一点: 我目前认为应该使用UIView子类和LayoutSubView。问题是我需要知道所有节点的大小(至少大致如此),然后才能开始定位它们。然后,由于定位涉及旋转,我可能需要再

我需要创建一个算法来布局一些分层数据,但以前从未做过这种事情,需要一些广泛的技巧

基本上,我需要重新创建此图表(使用动态数据):


我对它的大部分都没有问题,但在两件事上需要帮助:

  • 如何编写布局算法
  • 我应该为所有光盘使用UIView子类还是使用quartz(我确实需要交互)
  • 欢迎提出任何建议。我不需要太多细节


    更详细一点:

    我目前认为应该使用UIView子类和LayoutSubView。问题是我需要知道所有节点的大小(至少大致如此),然后才能开始定位它们。然后,由于定位涉及旋转,我可能需要再次调整子定位-在任何旋转之后才能添加标签

    其他考虑因素似乎是:表示区域是矩形的,而不是正方形的;我不能从纸上掉下来;我需要对光盘大小的变化进行动画处理


    任何指点都很好,谢谢。

    这类事情非常困难

    有趣的是,可能主要的实际初始约束是排版的大小

    在给出的示例中:观察他们可能选择了一个不同的SCPT**稍大一些(可能大10%-15%)或稍小一些,它仍然有效。他们在SCPT上做了一个美学决定

    空白对设计至关重要。他们特别的平面设计师碰巧喜欢你所看到的空白的特殊感觉。但对于较小的SCTP,这绝不会是“错误的”。此外,观察到他们本可以使用更大的SCPT。。。如果他们在排版上使用了较小的字体大小

    请注意,在任何情况下,您都无法在iPad(或Fone4)上显示如此多的字体

    因此,你必须马上决定该类型将如何显示、弹出、音频或其他内容。即使是白色类型(“光盘上”类型)也会给您带来麻烦

    你必须先在iPad上使用photoshop进行大量测试,然后才能进行算法测试。所以纯粹为了它的价值

    我个人会这样做。在总体规划中:我会尝试做一个软算法,在找到满意的结果之前重试。

    IMHO,基于之前做过的这类事情:这个问题太难了,用一些特别聪明的启发式方法很难一次性解决。既然没有一个聪明的人能拯救这一天,我会这样做:

    1) 计算要显示的总万亿。(在示例图像中,大约2.5是总数)

    2) 首先猜测一个SCPT值。例如,“18”是基于屏幕大小的实际图像,我们在上面的问题中看到

    3) 把大太阳(太阳)放在死中心,而对于中间的太阳(行星)——只需选择一个非常简单的启发式方法,从最大到最小的逆时针方向在左上角(不要试图在问题的这一部分变得更聪明——这确实可能是一个纯粹靠它自己的巨大研究项目)。。对小卫星也一样

    4) 对于行星和卫星之间的棍子-采用一个简单的解决方案(比如“总是0.5厘米”!!),就是这样。有了人工智能,你必须减少损失。。到处都是!:)将卫星固定在行星上,然后忘记它们

    5) 现在是困难的一部分。。对它们运行某种启发式,均衡地平衡到目前为止的将颜色视为质量,将无颜色视为无质量,移动“太阳”直到其达到平衡。(为了清楚起见,举个例子,如果你遵循3中提到的“行星”布局,可能会向下移动。)也可能将所有行星/月球系统移入移出,以尝试平衡它

    6) 下一次迭代。看看结果,然后决定你是否喜欢它!返回(2)并选择一个新值。(例如,可能是“16!”)

    (7) 这里有两种可能的结果可能是在开发过程中,SCPT有一个始终有效的神奇价值。可能是“14.3”或“18.2”或其他什么如果你发现了这样的价值,千万不要告诉任何人。将其作为您自己的秘密信息保存为客户提供一切值得的服务。相反,更困难的是,您可能会发现每次都需要不同的值。在这种情况下:您的AI将不得不自己迭代值,直到找到它喜欢的值为止。(例如,通过确定您的所有标签是否适合..以及“他们是否正在触摸”“屏幕上的所有标签”等明显的事情)

    无论如何,FWIW(也许什么都没有)这就是我要做的——一种基于对SCPT的第一次猜测的迭代方法

    顺便说一句:你很可能想买一本关于这种信息展示的经典而精彩的书来学习!!!每个人都应该有一份

    Tufte's定量信息的视觉显示
    爱德华·R·塔夫特著
    ISBN 0961392142

    关于图像布局的机制。您应该使用quartz或任何其他低级绘图-忘记UIView等。当然,您应该将逻辑与绘图层完全分离,因此(即使您确实希望更改为UIView、OpenGLES或其他版本),它只需更改几行代码

    希望能有所帮助

    注释…
    **SCPT。。万亿平方厘米

    后续…

    “要保持逻辑独立,您会使用管理器类型模式吗?”
    老实说:如果我这么做的话,我会启动一个全新的应用程序,纯粹是为了“研究”获取信息