Создание динамических плиток для CATiledLayer

Я видел сессию 104 WDC2010 для использования scrollviews и CATiledLayers, что все довольно круто. Но я не уверен в генерации изображений плитки. В примере были созданы фотографии лягушек. Но если у меня есть приложение для фотографий, где я беру свои собственные фотографии, мне нужно будет создать плитки самостоятельно, и я не уверен в лучшем подходе.

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

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

One Solution collect form web for “Создание динамических плиток для CATiledLayer”

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

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

Недостатком такого подхода является то, что он вводит латентность в рендеринге … Не подходит для игр на iphone 3g.

  • Любой способ кодировать PNG быстрее, чем UIImagePNGRпредставление?
  • CATiledLayer в симуляторе сетчатки iPad обеспечивает низкую производительность
  • Не все плитки перерисовываются после CATiledLayer -setNeedsDisplay
  • Как кэшировать CGContextRef
  • Как знает CATiledLayer, когда нужно предоставить новую плитку?
  • Отключить хранилище резервных копий на CAShapeLayer или подклассе CALayer, чтобы предотвратить предупреждение об ошибке «фиктивный уровень»
  • ios5: drawRect вызывается дважды в CATiledLayer для того же Rect
  • Нежелательная прокрутка при анимации zoomScale в UIScrollView
  • Огромные изображения в приложении iOS без CATiledLayer?
  • Освободить память, используемую CGContextDrawPDFPage
  • Interesting Posts

    Каков мой лучший курс действий для использования UIScrollViews в моей раскадровке, когда он основан главным образом на Auto Layout?

    Почему «Simulate Background Fetch» ​​приводит к сбою (libsystem_kernel.dylib`mach_msg_trap) с Xcode 8?

    Проблемы с установкой iOS-Universal-Framework

    didSelectRowAtIndexPath не вызывается?

    Получить Content-ID прикрепленного изображения при создании нового письма в iOS

    Контроллер отказоустойчивого просмотра для особого вида контроллера

    Неожиданный ключ CFBundleExecutable

    Alamofire 4 Swift 3 ПараметрEncoding Custom

    : непризнанный селектор, отправленный экземпляру SIGABRT

    Какое событие отменяется, и как оно отличается от штрихов, закончившихся

    не может обнаружить подключение к Интернету с достижимостью достижимости для интернет-соединения

    Добавление изображения в ячейку таблицы (iOS)

    Кордова и CORS (iOS)

    – не запускает уведомления KVO для ключа @ statusBarHidden.

    Когда использовать UICollectionView вместо UITableView?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.