Есть ли встроенные возможности для поддержания содержимого CALayer между drawLayer: inContext: calls? Прямо сейчас я копирую слой в буфер и перерисовывая изображение из буфера каждый раз, когда я перезвонил в drawLayer: inContext: но мне интересно, может ли CALayer сделать это автоматически ...Возможно ли сохранение содержимого CALayer между вызовами drawInContext?
ответ
Я не знаю Не верю. «DrawInContext» очистит базовый буфер, чтобы вы могли рисовать его. Однако, если вы откажетесь от методов drawInContext
или drawRect
, вы можете установить свой layer.contents в CGImage, который будет сохранен.
Я лично делаю это практически для всех моих подпрограмм. Я перезаписываю - (void) setFrame:(CGRect)frame
, чтобы проверить, изменился ли размер рамки. Если он изменился, я перерисовываю изображение, используя обычные обычные процедуры рисования, но в контексте: UIGraphicsBeginImageContextWithOptions(size, _opaque, 0);
. Затем я могу захватить это изображение и установить его в imageCache: cachedImage = UIGraphicsGetImageFromCurrentImageContext();
. Затем я устанавливаю layer.Contents в CGImage. Я использую это, чтобы помочь кешировать мои рисунки, особенно на новом iPad, который медленен во многих процедурах рисования, которые iPad 2 даже не моргает.
Другие преимущества этого метода: вы можете совместно использовать кешированные изображения между представлениями, если вы настроили отдельный общий кэш. Это может реально помочь вашей памяти, если вы хорошо управляете кешем. (Совет. Я использую NSStringFromCGSize в качестве словарного ключа для общих изображений). Кроме того, вы можете фактически открутить свои подпрограммы рисования в другом потоке, а затем установить содержимое слоя, когда это будет сделано. Это предотвратит блокировку основного процесса рисования (текущий образ может быть растянут в этом случае, пока не будет установлено новое изображение).
Вы когда-нибудь использовали CGLayerRef? Спасибо за ответ тоже. – jjxtra
Ничего страшного, на самом деле этого не нужно. Я довольно сильно придерживался CALayer, связанного с представлением. Однако, управляя несколькими слоями, я думаю, вы можете в значительной степени сделать то же самое. Условия для начала повторной розыгрыша могут быть немного сложнее, но я думаю, что общая идея должна быть выполнена. Однако использование CGLayerRef может быть сложнее, потому что вы не можете перезаписывать функции/методы, как вы могли, путем подкласса CALayer или использования KVO. –
- 1. CALayer drawInContext vs addSublayer
- 2. Привидение в [CALayer drawInContext]
- 3. В чем разница между CALayer -drawInContext: и -renderInContext :?
- 4. Подкласс CALayer «drawInContext», но не рисование?
- 5. Scrapy: сохранение печенья между вызовами
- 6. Сохранение переменных Python между вызовами скрипта
- 7. Сохранение состояния между вызовами ajax в javasctipt
- 8. Сохранение позиции стека рекурсивной функции между вызовами
- 9. Содержимое содержимого мерцает между вызовами ajax
- 10. Сохранение констант между вызовами в rails console
- 11. Сохранение значения между вызовами веб-службы
- 12. CALayer drawinContext, называемый @ 60fps, но просматривающий графику обновления @ 1fps
- 13. CALayer drawInContext не может нарисовать линии 1px на дисплеях сетчатки
- 14. Возможно ли поддерживать состояние между вызовами триггера Postgres?
- 15. Размещение содержимого в CALayer
- 16. Как плитка содержимого CALayer?
- 17. Возможно ли управлять вызовами на iPhone?
- 18. В чем разница между «drawViewHierarchyInRect» и «drawInContext»?
- 19. Содержание содержимого CALayer слева внизу
- 20. Прозрачность CALayer и Quartz
- 21. iOS - Обнаружение изменения содержимого CALayer
- 22. Функция ввода между вызовами
- 23. Сохранение информации сеанса между 2 вызовами asp.net программно?
- 24. Сохранение данных из всплывающего окна браузера между вызовами всплывающего окна
- 25. Сохранение объекта между вызовами на одну веб-страницу
- 26. GRAILSUI Datatable - сохранение и восстановление состояния между вызовами
- 27. async.whilst - приостановка между вызовами
- 28. Возможно ли сохранение класса объекта?
- 29. Добавить текст в CALayer
- 30. Возможно ли сохранение cookie между запросами на междоменные запросы?
Вы имеете в виду, что когда вы указываете слой на drawincontext, он теряет его, теряя значение его содержимого? –
@JustinMeiners Да, это правильно, он всегда начинается с нуля – jjxtra
Хмм, тогда я не знаю. это звучит как очень странное поведение, когда я устанавливаю свой слой. Контент CGImage никогда не теряет указателя. –