Изображение/программа просмотра фотографий UIScrollView с включенной подкачкой страниц и изменение масштаба

Вы попытались использовать DefaultValueAttribute или ShouldSerialize и методы Сброса в сочетании с конструктором? Я чувствую, что один из этих двух методов необходим при создании класса, который мог бы обнаружиться на поверхности разработчика или в сетке свойства.

55
задан RamC 21 August 2019 в 23:30
поделиться

5 ответов

ОБНОВЛЕНИЕ

Я удалил свой предыдущий ответ из-за новостей ниже ...

Большие новости для тех, кто не слышал. Apple выпустила видеоролики о сессиях WWDC 2010 года для всех участников программы для разработчиков iphone. Одна из обсуждаемых тем - как они создали приложение для фотографий !!! Они шаг за шагом создают очень похожее приложение и сделали весь код доступным бесплатно.

Он также не использует частный API. Вот ссылка на загрузку образца кода. Вам, вероятно, потребуется войти в систему, чтобы получить доступ.

Проверить это

А вот ссылка на страницу iTunes WWDC:

Проверить это

43
ответ дан 7 November 2019 в 07:20
поделиться

Взгляните на https://github.com/facebook/three20/blob/master/src/Three20UI/Headers/TTPhotoViewController.h Не уверен, что это вы ищете

-1
ответ дан 7 November 2019 в 07:20
поделиться

Я немного поигрался с родным приложением Photos и, думаю, могу с уверенностью сказать, что они используют один UIScrollView. Раздача заключается в следующем: увеличьте изображение и потяните влево или вправо. Вы увидите следующую или предыдущую фотографию. Если вы потянете достаточно сильно, он даже перейдет к следующей фотографии с увеличением 1.0f. Переверните назад, и ранее увеличенная фотография также вернется к масштабу 1.0f.

Очевидно, что я не писал Photos.app, но я попытаюсь догадаться, как они это сделали:

  • Один UIScrollView и один UIScrollViewDelegate
  • Заполните UIScrollView дочерними элементами UIImageView
  • Слушайте для scrollViewDidScroll:
  • Подсчитайте и выясните, на какой странице вы сейчас находитесь
  • Прослушайте viewForZoomingInScrollView:
  • Верните другое представление в зависимости от индекса страницы
  • Прослушайте для прокрутитеViewDidEndZooming: withView: atScale: и, при желании, сделайте сглаживание и т.д. на основе содержимого

Если вы решите попробовать это, дайте мне знать, как это работает для вас. Я хотел бы знать, как вы, наконец, заставили это работать. А еще лучше выложить на github.

6
ответ дан 7 November 2019 в 07:20
поделиться

Я немного поигрался с собственным приложением "Фото" и думаю, что могу с уверенностью сказать, что они используют {{1} } одиночный UIScrollView. Розыгрыш такой: увеличьте изображение и потяните влево или вправо. Вы увидите следующую или предыдущую фотографию. Если вы потянете достаточно сильно, он даже перейдет к следующей фотографии с увеличением 1,0f. Переверните назад, и ранее увеличенная фотография также вернется к масштабу 1.0f.

Это неправильно. Я использую вложенные прокрутки и получаю точно такой же эффект. Если вы используете какую-то схему управления памятью (которую мне пришлось начать использовать ... номер моей страницы довольно высокий (около 50 на каждую в 2 scrollViews)), вы можете использовать механизм, аналогичный тому, что у вас есть, запуская вашу страницу загружает / выгружает, чтобы вызвать сброс масштаба для страниц -1 и +1 с текущей страницы.

Я подозреваю, что яблоко срабатывает, как только исчезла предыдущая картинка.

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

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

Я даже пробовал создавать супернизкокачественные версии моих медиа, на случай, если это было проблемой. Каждое изображение весит около 10 КБ (это jpeg, заметьте) ... как вы уже догадались. Зависание все еще существует.

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

1
ответ дан 7 November 2019 в 07:20
поделиться

Конечно, было бы неплохо, если бы Apple встроила программу просмотра изображений, такую ​​как приложение для фотографий, в SDK, чтобы мы могли ее использовать. Сейчас я использую three20, и он отлично работает. Но есть много лишних вещей, которые нужно носить с собой, когда все, что вам действительно нужно, - это программа для просмотра фотографий.

0
ответ дан 7 November 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: