タイル ゲームの iPhone スプリングボードのドラッグ アンド ドロップ機能を模倣しようとしています。現在、MatrixCells を使用してビューの初期化で UIButtons を生成し、それらをビューに追加しています。MatrixCells にはorder
、独自のボタンにも使用されるタグがあります ( [button setTag:[cell order]];
)。
「layoutSubviews」を使用してビュー内の UIButtons を循環させ、それらをグリッドに配置すると、正常に動作します。グリッドがポップアップ表示され、ドラッグ機能を使用して、必要な場所にボタンを自由にドラッグできます。
- (void)layoutSubviews {
int row = 0;
int col = 0;
for ( UIButton *button in [self subviews] ) {
[button setFrame:CGRectMake( col * 80 + 5, row * 80 + 25, 70, 70)];
if (col < 3) {
col++;
}
else {
row++;
col = 0;
}
}
}
ただし、セルの順序を変更するときは、循環はsubviews
機能しません。だから、私は自分を循環させ、MatrixCells
それらを使用しorder
て適切なビューを取得し、次にframe
. しかし、ボタン0でレイアウトがおかしくなり、ボタンとして使用できなくなりました。
- (void)layoutSubviews {
int row = 0;
int col = 0;
for (MatrixCell *cell in currentOrder) {
UIView *view = [self viewWithTag:[cell order]];
[view setFrame:CGRectMake( col * 80 + 5, row * 80 + 25, 70, 70 )];
if (col < 3) {
col++;
}
else {
row++;
col = 0;
}
}
}
結果の写真は次のとおりです。http://i52.tinypic.com/2q903lk.png
viewWithTag
これに対する最もエレガントなソリューションのようです。だから私は途方に暮れています。これらの実装が同じようにレンダリングされない理由は何ですか?