Горизонтальная прокрутка iPhone - PullRequest
8 голосов
/ 24 апреля 2010

Мне нужно создать представление на iPhone, которое прокручивает по горизонтали галерею изображений. Проблема заключается в том, что эта галерея может иметь от 100 до 1000 изображений, которые необходимо представить, поэтому я хотел бы не загружать их все в один UIScrollView одновременно и не снижать производительность. Мне нужно создать представление, которое перезаписывает объекты представления (например, UITableView) для повышения производительности и сокращения накладных расходов памяти, но его необходимо прокручивать по горизонтали.

Есть идеи? Можно ли сделать операцию UITableView в горизонтальном направлении?

Спасибо!

Ответы [ 6 ]

2 голосов
/ 06 мая 2011

Это так же просто, как применить Transform.

Вот код. Запишите это в вашей таблице viewController init:

self.view.frame = CGRectMake(100,-5,250,350); //any Frame of your choice
CGAffineTransform trans = self.view.transform; // get current transform (i.e. portrait)
trans = CGAffineTransformRotate(trans, (M_PI / -2.0)); // rotate 90 degrees to go landscape
self.view.transform = trans; // set current transform (landscape)

Но теперь вам нужно понять, что ваша ось также поменялась местами. Любые изменения, которые вы вносите в высоту, изменят ширину (и наоборот), а любые изменения, сделанные в origin.x, изменят origin.y (и наоборот)

2 голосов
/ 24 апреля 2010

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

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

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

0 голосов
/ 28 октября 2014

Публикация ответа на эту старую ветку, потому что подтвержденный ответ неверен. Вы можете использовать UITableViewController и его встроенные функции dequeueReusableCellWithIdentifier.

Хитрость заключается в том, чтобы заставить ваш стол вращаться, а затем заставить вашу клетку вращаться в противоположном направлении.

в viewDidLoad вы добавите:

self.view.transform = CGAffineTransformMakeRotation(-M_PI_2);

А затем в cellForRowAtIndexPath вы должны использовать:

cell.containerView.transform = CGAffineTransformMakeRotation(M_PI_2);

Убедитесь, что каждое содержимое вашей ячейки добавлено в представление контейнера (в этом примере containerView ), так что вам нужно только повернуть контейнер, а не каждое подпредставление ячейки.

Также обратите внимание, что он будет работать лучше с ячейками, имеющими квадратные размеры, иначе вы можете столкнуться с вычислением высоты / ширины.

0 голосов
/ 01 марта 2011

Я думаю, что у меня есть для вас ответ О прокрутке по горизонтали

  1. создать UIScrollView (и отключить вертикальная прокрутка)
  2. положить UITableView внутри свитка вид
  3. изменить ширину табличного представления, как вы пожелать и обновить UIScrollView.contentSize как ширина tableView
0 голосов
/ 26 февраля 2011

Можно ли добавить UITableView по горизонтали? В другой ориентации, чем на экране. Затем вы можете использовать обычную семантику UITableView, где каждая строка представляет собой изображение, которое прокручивается по горизонтали, а не по вертикали.

0 голосов
/ 27 августа 2010

Я согласен с mbmcavoy , вы также можете посмотреть iPhone / iPad - AppStore, такой как UIScrollView с подкачкой и предварительным просмотром В этой статье объясняется, что вам нужно для UIScrollView, а также предоставляется Хороший пример и исходный код.

Привет

...