Получение черепичной коллекции изображений на iPad (Deep Zoom)
У меня есть набор коллекций коллекций, созданных с помощью Microsoft Deep Zoom, и приложение Silverlight, которое в настоящее время потребляет их для отображения через MultiScaleImage - все это работает очень хорошо - я просто хотел бы получить некоторый опыт программирования iPad и
есть несколько идей для некоторых приложений iPad. Все мои идеи полагаются на то, что я могу отображать/манипулировать этими черепичными наборами изображений (на iPad).
Я просто взял iMac, чтобы облегчить это. Я не вижу никаких библиотек Objective-C/Cocoa -touch, но я предполагаю, что мне придется сворачивать самостоятельно. (Я видел компонент Ajax от Seadragon, который довольно гладкий, но я имею дело с коллекциями здесь, которые он не поддерживает. Я также хотел бы перевернуть это как родное приложение, чтобы получить опыт.)
Единственным проектом с открытым исходным кодом, который я нашел для отображения/обработки наборов черепичных изображений, был Openzoom - компонент Flash. Я тоже не знаком с ActionScript (Python, Java, С# и c - это единственные языки, которые я действительно использовал), но вкратце проверяя код, на котором у меня действительно не было никаких проблем, и, вероятно, можно использовать его для подсказок о том, как поменять местами входы и выходы и т.д. Но, поскольку я довольно новичок в Objective-C/Cocoa -touch, некоторые указатели в правильном направлении будут оценены.
1) Есть ли какие-либо другие проекты, которые у меня отсутствуют, или это OpenZoom, лучший вариант для некоторых ссылок?
2) Должен ли я пытаться сделать это отображение в каркасе UIKit, или я должен делать это как отображение OpenGL?
3) Любые другие предложения/указатели, о которых я не думал спрашивать.
Ответы
Ответ 1
Я только что работал над несколькими приложениями, которые полагаются на черепицу больших изображений, чтобы обеспечить глубокое масштабирование. Я нашел несколько примеров, но лучшим и полезным для меня был образец кода Apple "PhotoScroller".
Он использует CATiledLayer для обработки черепицы. Результатом является чрезвычайно плавный и отзывчивый интерфейс даже с очень большими изображениями и не слишком сложный. (Немного сложный, но не очень плохой).
Итак, чтобы ответить на ваш вопрос напрямую:
Ответ 2
В исходных примерах WWDC 2010 под iOS есть проект в ScrollView Suite под названием Tiling. Это соответствует сеансу 104 WWDC10. Это, вероятно, лучший пример обработки изображений.
Ответ 3
Вы можете взглянуть на них так, как это делает библиотека RouteMe, динамическая загрузка плиток с более высоким разрешением, панорамирование и т.д. https://github.com/route-me/route-me
Ответ 4
Не могу поверить, что никто не сказал вам о UIScrollview; компонент UIScrollView предназначен именно для этой цели! (думаю, Google Maps, который его использует).
Проверьте ссылку на класс...
UIScrollView
Необходимый вам метод-делегат...
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
Это позволяет проверить уровень масштабирования, смещение и т.д., а затем предоставить представление для масштабирования. Таким образом, вы можете поддерживать свою "позицию" внутри плиточного ландшафта независимо от графики, используемой для его представления.
Не сворачивайте свой собственный UIScrollView, не нужно!
Ответ 5
Взгляните на CATiled Layer. См. Мой ответ на аналогичный вопрос здесь: Рисование в CATiledLayer с CoreGraphics CGContextDrawImage