Как создать временную шкалу на iPhone - PullRequest
2 голосов
/ 05 марта 2010

Я пытаюсь создать в приложении для iPhone временную шкалу, чтобы прокручивать время.Я думаю, что я собираюсь использовать UIScrollView, чтобы сделать это, но я не уверен, как это сделать.

Должен ли я создавать многоразовую очередь представлений с нуля с представлениями, содержащими дни / месяцы / годы иповторно использовать их, когда они выходят из экрана?(Я имею в виду многократно используемые ячейки из таблиц).

Может быть, есть лучший способ сделать это?Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 06 марта 2010

Насколько я знаю, UIScrollView не имеет ограничения по ширине с 3.0. Тем не менее, вы не можете использовать его для отображения большого объема данных, потому что для его отрисовки потребуется слишком много времени, и ваше приложение будет работать медленно.

Вместо этого вы можете использовать UIView ширины = 320,0 * 3. Ручка

- (void) touchesMoved: (NSSet*)_touches withEvent: (UIEvent*)_event

И применить

view.transform = CGAffineTransformMakeTranslation(-shift, 0.f);

Сдвиг здесь может быть рассчитан в зависимости от дельты X, найденной из набора касаний. Аффинный перевод позволяет имитировать плавное движение. Когда пользователь отпустит свой палец (touchesEnded), перерисуйте ваше представление (setNeedsDisplay) со смещенным контентом и верните его:

self.transform = CGAffineTransformIdentity;

Не выполняйте setNeedsDisplay во время прикосновения к движению, поскольку это может повлиять на производительность, если вы рисуете графики или что-то вычисляете.

Для 2D-карты вы должны подумать о X и Y и иметь представление 320 * 3 X 480 * 3:)

Это интересное задание. Наслаждайтесь.

0 голосов
/ 05 марта 2010

Ну, UIScrollView конечно, так что вы достигнете конца в одной точке. Конечно, вы можете перемещать предметы (назад), чтобы убедиться, что вы никогда не достигнете этого предела.

Вы, безусловно, хотите выполнить кеширование / пейджинг UITableView, чтобы убедиться, что в памяти хранятся только минимально необходимые представления.

Задайте более конкретный вопрос, если вы готовы к этому: -)

...