2010-12-13 2 views
2

いくつかの階層データをレイアウトするためのアルゴリズムを作成する必要がありますが、以前はこのようなことは一度もしていませんでした。図のカスタムビューレイアウトを作成するヒント

基本的に私は(動的データとの)この図を再作成する必要があります。

diagram http://dl.dropbox.com/u/15126868/diagram.png
bigger

私はそれのほとんどの問題を持っていますが、二つのことで助けを必要としません。

  1. レイアウトアルゴリズムの作成にどのようにアプローチすればよいですか?
  2. 私は、任意の提案は大歓迎、すべてのディスクまたは使用の石英のためのUIViewサブクラス(私は対話が必要です)

を使用する必要があります。私はあまり詳細を必要としません。


もう少し詳細:

私は現在、私はUIViewのサブクラスとlayoutSubviewsを使用する必要があります考えています。問題は、私はそれらを配置する前に、すべてのノードのサイズ(少なくともおおよそ)を知る必要があります。次に、ポジショニングには回転が必要なため、子の位置を再調整する必要があります。回転後にラベルを追加することはできません。

その他の考慮事項は、プレゼンテーション領域が正方形ではなく長方形であることです。私はページから流出することはできません。ディスクのサイズの変更をアニメートする必要があることを示しています。

すべてのポインタは素晴らしいでしょう、ありがとう。

答えて

5

このようなことは非常に困難です。

興味深いことに、ここでの主な実際の初期の制約は、タイポグラフィのサイズです。例で

は、与えられた:彼らは**幾分大きい(おそらく、10%-15%以上)又は若干小さい異なるSCPTを選択している可能性があり、それはまだを働いているであろう観察します。彼らはSCPTについて審美的な決定を下した。

空白は、設計にとって重要ですです。彼らの特定のグラフィックデザイナーは、あなたが見る空白のような気持ちが好きだった。しかし、SCTPのサイズを小さくすれば、「間違っている」ことは決してありません。さらに、彼らがもっと大きなSCPTを使用していたかもしれないことを観察してください...もし... ...彼らはタイポグラフィー上でより小さなポイントサイズを使用しました。いずれにしてもあなたは、単にのiPad(またはFone4)の小さなそれほど種類ことを表示することができませんことを

注意。

すぐに、タイプがどのように表示されるか、ポップアップ、オーディオなど何かを決定する必要があります。白いタイプ(「ディスク上」のタイプ)でさえ問題を起こすでしょう。

アルゴリズムを進める前に、まずPhotoshopで多くのテストをしなくてはなりません。純粋にそれが価値あるもののために...

私が個人的にこのようなことをする方法は次のとおりです。一般的な計画で:私はそれが満足している結果を見つけるまで自分自身を再試行するスキッシュアルゴリズムをしようとするだろう。

以前のもののこのタイプを行うに基づいてIMHO、:この問題は、それがいくつかの特にスマート尻ヒューリスティックで一気に片付けるにはあまりにも難しいです。

1)表示する合計桁数を計算します。 (例では約2.5のように見えます)

2)まずはSCPTの値を推測します。あなたの質問の中に掲示されているように、上記の画面サイズでの実際の画像に基づいて、例えば「18」はどうですか?

3)大きなもの(太陽)を死んだ中心に置き、中央のもの(惑星)を - ちょうど非常に簡単なヒューリスティックを選んでください。左上の反時計回りの最大値問題のその部分でそれより巧みになるようにしようとする - それは純粋にそれ自身の巨大な研究プロジェクトである可能性があります。小さなもの(月)でも同じことをします。惑星と衛星との間のスティック用

4) - は!!「は常に0.5センチメートル」のような些細な溶液を(採用)、それはそのです。 AIを使って、あなたはどこからでもあなたの損失を減らす必要があります! :) 月を惑星に固定し、それらについて忘れてください

5)今、ハードの部分は...彼らの上にヒューリスティックのいくつかの並べ替えを実行して均等にあなたがこれまで持っているものバランスをとる色を質量として扱い、質量がない色を除き、「太陽」を平衡に達するまでに移動します。 (明らかに、3で述べた「惑星」のレイアウトに従った場合、下向きになる可能性がある例として)おそらくは、すべての惑星/月システムをそれをバランスよく調整しようとするかもしれません。

6)次の繰り返しです。その結果を見て、あなたが好きかどうかを決めてください! (2)に戻り、新しい値を選択します。(例えば、「16!」など)

(7)ここでは2つの結果が考えられます。 開発中に、常に動作するSCPT用の魔法の価値が1つあるかもしれません。おそらく「14.3」または「18.2」などです。 このような値を見つけたら、誰にも決して伝えないでください。あなたの秘密の情報としてそれを保つ!!!!それはすべてのクライアントの価値があるそれのために牛乳。逆に、より困難な場合は、毎回異なる価値が必要になるかもしれません。その場合:あなたのAIは、それ自身の値を使ってまで繰り返す必要があります。が好きです。 -

とにかく、私はどうなるのかですFWIW(おそらく何もない)(例えば、すべてのラベルがすべての画面「などの」フィットか...など明らかなものは、「彼らは触れている」かどうかを決定することにより) SCPTの最初の推測に基づく反復的アプローチ。

ところで:あなたは十分に情報の表示のこの種にクラシックと華麗な本を購入して勉強したいことがあり!!!誰もがコピーを持っているはずです。画像をレイアウトの力学についてエドワードR.タフティ
ISBN 0961392142

によってQuantatative情報

タフティのビジュアルディスプレイ。あなたは、クォーツや他の低レベルの図面を使用する必要があります - UIViewsなどを忘れてください。描画レイヤーとロジックを完全に分離する必要があります。UIView、OpenGLESなどに変更したい場合でも、数行のコードを変更するだけです。

どうにかして助けてください。

ノート...兆

フォローあたり
** SCPT ..平方センチメートル...
「別のロジックを保つためには、あなたはマネージャー型のパターンを使用するのでしょうか?」
正直言って、もし私がそれをやっていたら、純粋にこの部分を得るための「研究」のために全く新しいアプリを始めるだろう。そのアプリでは(正直に言って!)私はどんなきちんとしたやり方で何かをするために全力を尽くすだろう! : - /どこでもグローバル! :)私にとって残念なことに、私は一度に1つのことしか考えることができないので、その段階ではアルゴリズムそのものについて考えることになります。

私は本当に、FWIW、もし私だったら、単にそれをクラスにしようと思っています(AmazingClassと言ってみましょう)それ以上の複雑さはありません。個人的には、データを別々にどこかに置くことにしました(DBでも配列なのかに関係なく)、私はAmazingClassにデータを取得させるだけです。 (私の思考 - 。。あなたがデータとするときに必要になるだろうどのように地獄、AmazingClassの過程でどの時点でそう、ちょうどあきらめ、AmazingClassのように、いつ、それはそれを望んでいることを見てみましょう知っていることはありません)

あなたが話すこれらのすばらしい響きのマネージャーパターンに慣れているなら、そうではありません。要するに、できるだけそれを大きく切り離すことになるだろう。私はそれを行うための最善の方法について話すだけでは十分ではありませんが、どこかで完全に分離してください。申し訳ありませんが、私はその1つを助けることはできません。

+0

ジョー、すてきな答え、ありがとう。それは本当に有用な情報です。私はSCPTのラインに沿って何かを考えていました。私は、あなたが必要とする反復的アプローチを本当にうれしく思っています。私はシンプトンだと思っていました。 1回のスイープでレイアウト。 – pieSquared

+0

ロジックを別々に保つには、マネージャタイプのパターンを使用しますか?それは私が疑っているように厳しいものになるだろうが、あなたは良い方向に私を止めてしまった。お時間を割いていただきありがとうございます。 – pieSquared

+0

合意。研究の名前の最初の混乱が最善のようです。私はCA&CGと一緒に遊んでいないので、そこから始めて、テキストなしでぼんやりと働く何かを得ることができるかどうかを見ていきます。もう一度ありがとうジョー - 今気分がいいよ! – pieSquared

関連する問題