0

ユーザーがサブビューを追加できるUIViewがあります。ここで、最初に見つかったオープンな場所にユーザーのサブビューを自動的に配置するアプリケーションが必要です。

配置するサブビューのフレームが他のサブビューと交差しない場合、その場所は開いていると見なされます。

このオープンエリアを見つけるための計算は、瞬時である必要はありません。ユーザーが最初にシーンに入ったときに実行され、その時点で、あたかもそれを配置したユーザーであるかのようにその場所を保存します。

コンテナーUIViewは、サブビューを配置するためのオープンスペースを常に持つのに十分な大きさです(ユーザーが追加できるサブビューの数には制限があります)。

サブビューを配置する場所を決定する最も簡単な方法は何でしょうか?

4

2 に答える 2

0

そうするための組み込みのメソッドが存在するかどうかはよくわかりません。ただし、反復ループを実行して、コンテナビュー内のすべてのビューの境界を取得できます。読み取り値に基づいて、オープンスペースを計算する必要があります。

于 2012-07-06T21:30:41.477 に答える
0

この種の問題を解決するために一般的に使用されるアルゴリズムの説明を、この質問への回答として投稿しました:2D配列で最大の長方形を見つける。そのソリューションを問題に適応させるのはかなり簡単です。その質問では、塗りつぶされたスペースがグリッド上にありました。これにより、スキャンラインを進める量を決定するのが少し簡単になりました。もっと注意する必要があります。また、もう1つの質問は、最大面積の空の長方形を探すことでした。最初の近似が見つかったらすぐにアルゴリズムを終了できます。

もちろん、すべてのサブビューが同じサイズである場合、ソリューションはほぼ同じです。

お役に立てれば。

于 2012-07-06T21:59:10.097 に答える