質問

まずは、正しい質問をしているかどうかわからないので、やりたいことを言うことから始めます。グリッドベースのマップを作成し、オブジェクトの配列を保持して、マップの状態と表示を保持します。各オブジェクトはTileクラスになります。 UIViewまたはサブクラスNSObjectをサブクラス化し、UIViewのivarを持つ必要があります。また、UIView内にUIImageViewを配置して、マップのそのビットを表す画像を読み込むことも計画していました。最後に、NIBからビューをロードしたかった。

個人的には、これらのことをそれぞれ行う方法を知っていますが、ベストプラクティスがわかりません。何か考えはありますか?

役に立ちましたか?

解決

Core Animationレイヤーを検討しましたか?ビュー内の境界と位置をそれぞれ持つレイヤーのグリッドを持つ単一のビューを作成できます。必要なものが得られるようです。電話では、画像でレイヤーのコンテンツを設定するのは次のように簡単です:

CALayer *gridLayer = [CALayer layer];
[gridLayer setContents:(id)[gridImage CGImage]];
[gridLayer setBounds:[gridImage bounds]];

// Position the layer's center a x:25.0 y:25.0 within the view
[gridLayer setPosition:CGPointMake(25.0f, 25.0f)];

[[view layer] addSublayer:gridLayer];

変数gridImageは、どこかに割り当てたUIImage *です。レイヤーの四角形と位置を計算し、それに応じて配置するだけです。

他のヒント

モデル、コントローラー、ビューを構成する特定のクラス/オブジェクトを明確に定義してください。データとデータロジックはモデル内にあり、表示はビュー内にあり、それらをコントローラと結び付ける必要があります。

グリッドを実現する最も簡単な方法は、単一のコントローラーによって配置されるUIImageViewを使用することです。モデルは、マップスクエア間の論理関係を追跡し、それをコントローラーに中継します。コントローラーは、イメージをUIIMageViewにロードします。コントローラは、ペン先からのすべてのロードを処理します。

ただし、CALayersの使用は、推奨される最先端の方法です。基本モデル、コントローラー、ビューの関係は、CALayersがImageViewsを置き換えることを除いて同じです。

私が正しく理解すれば、UIImageViewのサブクラスを作成できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top