2010-03-05 3 views
2

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

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

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

ответ

0

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

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

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

1

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

Вместо этого вы можете использовать UIView width = 320.0 * 3. Ручка

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

И применять

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

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

self.transform = CGAffineTransformIdentity;

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

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

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