Мы периодически создаем CGLayer, выполняем обработку, а затем выпускаем ее. Это часто происходит в режиме реального времени. Конечно, каждый раз при создании нового CGLayer нужно много усилий. Итак ...
Конечно, было бы лучше просто сохранить слой вокруг и каждый раз стирать все данные с него , а не создавать новый с нуля.
Примечание: если вы рисуете пустой или прозрачный прямоугольник, охватывающий все, , который просто добавляет еще больше данных поверх ваших существующих путей.
Итак, как на самом деле «стереть» или «начать заново» CGLayer?
Существует функция CGContextBeginPath (cc), но она сбивает с толку: кажется, она только очищает "этот" путь, кажется, что она не стирает весь CGLayer обратно в состояние отсутствия данных .
Как вернуть CGLayer в состояние отсутствия данных? Кто-нибудь знает?
Обновление ...
Оказывается, на самом деле нет способа сделать это.
После значительных экспериментов мы определили, что, похоже, нет никакого способа очистить все данные от CGLayer (что действительно разочаровывает).
Обратите внимание, что добавление нового белого или прозрачного прямоугольника только делает это - фактически добавляет больше данных.
Так что, к сожалению, нет известного способа сделать это. Если вы строите их с высокой частотой (возможно, для расчета), вам просто нужно начинать с новой каждый раз. Или, очевидно, вы можете удалить (на самом деле удалить, а не просто закрыть) только один путь, используя CGContextBeginPath ().
Надеюсь, это поможет кому-то в будущем.