Как мне реализовать собственную сетку на iPad? - PullRequest
1 голос
/ 28 февраля 2012

Я разрабатываю приложение для iPad, которое будет иметь собственную сетку. Сетка будет отображать простые геометрические фигуры разных цветов, которые содержат один символ. Они будут часто обновляться в зависимости от действий пользователя.

Сетка будет больше, чем размер экрана, в обоих направлениях, поэтому потребуется прокрутка / панорамирование.

Мне также нужно, чтобы верхний ряд и первый столбец были «заморожены» - поэтому верхний ряд остается сверху, но содержимое внутри него прокручивается горизонтально с остальной частью сетки, а первый столбец остается слева, но содержимое прокручивается по вертикали вместе с остальной сеткой.

Содержимое первого столбца может быть широким, поэтому мне нужно разрешить пользователю изменять его размер.

Я борюсь с лучшим способом создать это. Я думаю, что было бы проще всего иметь его как отдельный пользовательский вид, когда я управляю всем рисованием и взаимодействием вручную. Но я не могу не чувствовать, что мне не хватает более простого способа сделать это. Может быть, есть даже подходящий сторонний компонент, который будет лучшей отправной точкой.

Каков наилучший способ разработки этого компонента приложения?

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

У меня было бы 3 UIScrollViews, для которых вы можете соответствующим образом установить кадры, чтобы они делали первый столбец и первую строку нужного вам размера - основным содержимым сетки может быть нижний правый UIScrollView.

класс контроллера может быть UIScrollViewDelegate для всех представлений.Установите размер содержимого 1-го столбца UIScrolView равным ширине с шириной его фрейма, но высоту, соответствующий размеру содержимого, 1-й ряд UIScrollView должен иметь такую ​​же высоту, что и его фрейм, но правильную ширину для содержимого,а в нижнем левом углу UIScrollView размер его содержимого будет установлен в качестве размера содержимого сетки.

Метод - (void) scrollViewDidScroll:(UIScrollView*)scrollView вызывается при прокрутке любого из них, поэтому проверьте, какой из них был прокручен, и прокрутите остальные два каксоответствующий.

то есть

//Declared and positioned somewhere earlier, like in the .h
UIScrollView* firstCol;
UIScrollView* firstRow;
UIScrollView* mainGrid;

- (void) scrollViewDidScroll:(UIScrollView*)scrollView {
    if (scrollView == firstCol) {
        CGPoint offset = mainGrid.contentOffset;
        offset.y = firstCol.contentOffset.y
        [mainGrid setContentOffset:offset];
    }
    else if (scrollView == firstRow) {
        CGPoint offset = mainGrid.contentOffset;
        offset.x = firstRow.contentOffset.x
        [mainGrid setContentOffset:offset];
    }
    else if (scrollView == mainGrid) {
        CGPoint offset = firstRow.contentOffset;
        offset.x = mainGrid.contentOffset.x;
        [firstRow setContentOffset:offset];
        offset = firstCol.contentOffset;
        offset.y = mainGrid.contentOffset.y;
        [firstCol setContentOffset:offset];
    }
}
0 голосов
/ 22 августа 2013

UICollectionView делает довольно хорошую работу для этого. Но если вам нужна сетка данных, посмотрите на этот . Это находится в стадии альфы, но это будет довольно сильным через месяц или два, я бы сказал. Любые предложения приветствуются, и это бесплатно, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...