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