Я пытаюсь имитировать функцию перетаскивания iPhone Springboard для мозаичной игры, и в настоящее время я использую MatrixCells для генерации UIB-кнопок в инициализации View и добавления их в представление. MatrixCells имеют тег order
, который также используется для их собственной кнопки ([button setTag:[cell order]];
).
Когда вы используете `layoutSubviews 'для циклического перемещения по UIB-кнопкам в представлении, чтобы расположить их в виде сетки, все работает нормально. Сетка всплывает, и моя функция перетаскивания позволяет мне свободно перетаскивать кнопки, где я буду.
- (void)layoutSubviews {</p>
<pre><code>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 {</p>
<pre><code>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
казалось самым элегантным решением для этого. Так что я в растерянности. Есть идеи, почему эти реализации не отображаются одинаково?