Все,
У меня возникли проблемы с поведением, которое я хочу от CATiledLayer. Есть ли способ, с помощью которого я могу вызвать перерисовку плиток без побочного эффекта, чтобы их области были очищены до белого? Я уже подклассифицировал CATiledLayer, чтобы установить fadeDuration для возврата 0.
Чтобы быть более конкретным, вот подробности того, что я вижу и чего я пытаюсь достичь:
- У меня есть UIScrollView с большим размером контента... ~ 12000x800. Его просмотр содержимого - это UIView, поддерживаемый CATiledLayer.
- UIView визуализируется с большим количеством нарисованных линий
- Все работает нормально, но содержимое UIVEW иногда меняется. Когда это произойдет, я хотел бы перерисовать плитки как можно проще. Когда я использую setNeedsDisplay в представлении, плитки перерисовываются, но сначала очищаются до белого, и перед тем, как будет нарисовано новое содержимое, потребуется небольшая часть секунды. Я уже подклассифицировал CATiledLayer, чтобы fadeDuration был установлен в 0.
- Поведение, которое я хочу, похоже, должно быть возможно... когда вы увеличиваете масштаб прокрутки и контент перерисовывается с более высоким разрешением, там нет гашения перед перерисованием; новый контент рисуется прямо поверх старого. Это то, что я ищу.
Спасибо; Я ценю ваши идеи.
Обновление
Только для того, чтобы следить - я понял, что плитки не очищаются до белого цвета до перерисовывания, их полностью вынимают; белый, который я видел, - это цвет представления, который находится под моим взглядом, поддерживаемым CATiledLayer.
В качестве быстрого взлома/исправления я помещаю UIImageView под UIScrollView, и перед запуском перерисовки представления, поддерживаемого CATiledLayer, я визуализирую его видимый раздел в UIImageView и покажу его. Это значительно улучшает перерисовку.
Если у кого-то есть лучшее решение, например, чтобы убрать фрагменты, предназначенные для перерисовки, прежде чем их перерисовать, я все равно буду их слушать.