- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要创建一种算法来布局一些分层数据,但以前从未做过这种事情,并且需要一些广泛的技巧。
基本上,我需要重新创建此图(使用动态数据):
diagram http://dl.dropbox.com/u/15126868/diagram.png
bigger
我大部分都没有问题,但是需要两点帮助:
我该如何编写布局算法?
我应该为所有光盘使用UIView子类还是使用石英(我需要交互)
任何建议最欢迎。我不需要太多细节。
更详细一点:
我目前在想应该使用UIView子类和layoutSubviews。麻烦的是,在开始放置它们之前,我需要知道所有节点的大小(至少是大致大小)。然后,由于定位涉及旋转,因此我可能需要再次调整子位置-并且直到进行任何旋转后才能添加标签。
其他考虑因素似乎是:显示区域是矩形,而不是正方形;我不能从页面上溢出;并且我需要为光盘的大小制作动画。
任何指针都很好,谢谢。
最佳答案
这种事情非常困难。
有趣的是,这里可能主要的实际初始约束是字体的大小。
在给出的示例中:观察到他们可以选择一个稍大一些的SCPT **(也许大10%-15%)或更小一个它仍然可以工作。他们对SCPT做出了美学决定。
空白对于设计至关重要。他们特别的平面设计师碰巧喜欢您所看到的空白感。但是,使用较小的SCTP绝不是“错”的。此外,观察他们可能使用了更大的SCPT ... IF ...他们在版式上使用了较小的磅值。
请注意,无论如何,您根本无法在iPad(或Fone4)上显示这么小的文字。
因此,您必须立即决定类型的显示方式,弹出窗口,音频或其他内容。即使是白色(“光盘上”类型)也会给您带来麻烦。
您必须先在iPad上使用photoshop进行大量测试,然后才能进行算法。所以纯粹是为了它的价值...
这是我个人将执行此类操作的方式。总的来说,我会尝试做一个松散的算法,然后重试直到找到满意的结果。
恕我直言,基于以前做这种事情的基础:这个问题很难通过一些特别聪明的启发式方法一劳永逸地解决。由于没有一种智能资产启发法可以节省一天的时间,因此我将这样做:
1)计算要显示的总兆数。 (示例图像中的总数大约为2.5)
2)猜一个SCPT值开始。例如,根据我们上面在您的问题内所看到的屏幕尺寸的实际图像得出的“ 18”呢?
3)将大个(太阳)放在死点,中间的(行星)-只需选择一个非常简单的试探法,从左到右从最大到最小逆时针旋转(不要尝试在那部分问题上要比那更聪明-实际上这可能是一个巨大的研究项目,纯粹是靠它自己完成的。..并且对小问题(月球)也可以做到。
4)对于行星和卫星之间的棍棒-采用简单的解决方案(例如“总是0.5厘米”!),就是这样。有了AI,您就可以减少损失..到处都是! :)将卫星固定在行星上,而不必理会它们。
5)现在,困难的部分..对它们进行某种启发,以均衡地平衡您到目前为止所拥有的。将颜色视为质量,将颜色视为无质量,然后将“太阳”移动到平衡。 (很明显,例如,如果您遵循3中提到的“行星”布局,则可能会向下移动。)也可能将所有行星/月球系统内外移动以尝试平衡。
6)接下来的迭代。查看结果并决定是否喜欢!返回(2)并选择一个新值。 (例如“ 16!”)
(7)这里有两种可能的结果。可能是在开发过程中,SCPT始终具有一种神奇的价值。也许是“ 14.3”或“ 18.2”等等。如果您发现这样的价值,请不要告诉任何人。保留它作为您自己的秘密信息!!!!用它为客户赢得的一切收益。相反,更困难的是,您可能会发现每次都需要一个不同的值。在这种情况下:您的AI必须自己遍历值,直到找到自己喜欢的值。 (例如,通过确定您的所有标签是否适合..以及诸如“它们是否在触摸”“全部在屏幕上”之类的明显内容)。
无论如何,FWIW(也许什么也没有)就是我要做的-基于对SCPT的第一次猜测的迭代方法。
顺便说一句:您可能希望通过这种信息展示来购买和研究经典而辉煌的书!!!每个人都应该有一个副本。
图夫特的定量信息的视觉展示
爱德华·塔夫特(Edward R.
书号0961392142
关于布局图像的机制。您应该使用石英或任何其他低级绘图-不用担心UIViews之类的东西。您肯定应该将逻辑与绘图层完全分开,因此(即使您确实要更改为UIViews,OpenGLES或其他任何东西)也只需更改几行代码。
希望它能有所帮助。
笔记...
** SCPT ..平方厘米/万亿
跟进...
“为了保持逻辑上的分离,您会使用经理型模式吗?”
老实说:如果我这样做的话,我只会启动一个全新的应用程序,纯粹是为了“研究”获得这一部分,这一挑战,正确工作。在那个应用程序中(说实话!),我将尽一切努力以任何整洁的方式做任何事情! :-/全球各地! :)不幸的是,我一次只能想到一件事,所以在那个阶段,我只会考虑算法本身。
我相信,一旦您解决了这个问题,就可以在一个更大的项目中实现它了……真的,FWIW,如果是我,我只会使其成为一个类(比方说AmazingClass),没有比这更复杂的了那。就我个人而言,我会将数据分别放置在某个地方(无论是在数据库中还是在数组中或其他任何东西中),而且我只会让AmazingClass负责获取数据。 (我的想法-您永远不知道自己到底会需要什么数据,以及何时需要在AmazingClass的过程中的什么时候。因此,只需放弃并让AmazingClass随需使用它。)
如果您熟悉这些听起来不错的经理模式,是的,为什么不呢!简而言之,我会尽可能地将其分开。我还不足以说出做到这一点的最佳方法-只是将其完全分开。对不起,我帮不上忙。
关于iphone - 有关为图创建自定义 View 布局的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4431610/
我的 friend 编写了一个程序,它比较随机排列的骰子面,以找到分布最均匀的面——尤其是当面不仅仅是序列时。 我将他的程序翻译成 haskell 是因为我一直在寻找一个理由来让别人知道 haskel
我需要对表单中的某些字段进行评论/提示。我的想法是在模型中描述它,就像attributeLabels一样。我该怎么做? 然后它会是理想的,如果 Gii 模型(和 Crud)生成器直接从 mysql 列
我们使用 FastReport 来生成报告。事实上,我们为访问源代码付费。 我们目前使用的是 FastReport 的最新稳定版本。虽然它对于我们的生产来说足够稳定,但每当我编译时,我都会看到以下内容
我需要创建一个对话框/提示,包括用于用户输入的文本框。我的问题是,确认对话框后如何获取文本?通常我会为此创建一个类,将文本保存在属性中。不过我想使用 XAML 设计对话框。因此,我必须以某种方式扩展
我想提示用户是否要执行操作(删除) - 用警报框说"is"或“否”,如果是,则运行删除脚本,如果否,则不执行任何操作 我不太了解 javascript,因此是否有人可以使用 javascript 获得
所以我正在编写一个简单的 JS 代码。我们刚刚开始学习函数。我需要创建一个名为“printStars”的函数。 我需要从用户那里获取一个号码,并根据该号码打印“*”。 这就是我所做的:
我在我的页面上添加了一个提示,但它在页面加载之前加载了。如何仅在整个页面可见时才显示消息? 这是我的提示: if (name == null || name == "") { txt == "No
我在我的页面上添加了一个提示,但它在页面加载之前加载了。如何仅在整个页面可见时才显示消息? 这是我的提示: if (name == null || name == "") { txt == "No
我正在自定义我的 zsh 提示,并发现以下内容来检查是否有任何后台作业: if [[ $(jobs | wc -l) -gt 0 ]]; then # has background job(s)
这个问题在这里已经有了答案: JavaScript object: access variable property by name as string [duplicate] (3 个答案) pa
我正在尝试用 javascript 制作一个简单的数学练习程序。在提示警报中给出不同的值,并将答案与用户输入进行比较。这是代码: Calculations generate(); functio
在这段代码中,尽管我使用了文本对齐属性在“编辑文本” View 的中心设置“提示”。但它无法正常工作。 最佳答案 尝试 关于android - 如何在编辑文本的中心对齐文本(提示),我们在Sta
我正在尝试让我的 EditText 显示一个提示,例如“请在此处输入答案”,当用户点击 EditText 以键入他们的答案时,文本应该消失并留空,以便他们在其中输入答案. 截至目前,这就是我的 .xm
我当前的 android 应用程序中有两个微调器,我想要一个默认值,例如 editText 的 android:hint 功能。有没有办法这样做,但不会将提示添加到填充微调器的字符串数组。例如从微调器
如果我的表单已完全填写,我如何提示“感谢您填写表单,“name”!” function submit_onclick() { if(confirm("Thanks for completing t
我刚刚了解了prompt()命令;我知道 Prompt() 命令以字符串的形式返回用户输入。我正在搞乱下面的程序,我输入了Per“Dead”Ohlin作为男性名字。为什么这有效并且没有引起任何问题?
void openUpNow(FILE *x, FILE *y) { x = fopen("xwhatever", "r"); y = fopen("ywhatever", "r");
我有一个作业正在处理,但我在使用 prompt() 方法时遇到了问题。我看到我可以做一个提示,但我需要几个并且有数量。 例如... 我创建了一个 HTML 表格,其中包含许多艺术家和包含 DVD、CD
我正在学习 Big Nerd Ranch 的 iOS Programming, 2nd Edition,我已经来到第 4 章挑战:标题。该练习暗示我感到困惑;它说我需要做一些我认为不需要做的事情。 到
抱歉,如果这是微不足道的,但我没有找到任何解决此问题的建议。我在 Ubuntu 上,我的 Yii 项目需要 PHPUnit。我已经安装了 PHPUnit 两次,方法是下载 phpunit.phar 并
我是一名优秀的程序员,十分优秀!