Все,
Я испытываю затруднения при получении поведения, которое я хочу от CATiledLayer. Существует ли способ, которым я могу инициировать мозаики для перерисовки, не имея побочного эффекта, что их области очищены белому сначала? Я уже разделил CATiledLayer на подклассы для установки fadeDuration для возврата 0.
Чтобы быть точнее, вот детали того, что я вижу и чего я пытаюсь достигнуть:
Спасибо; Я ценю Ваши идеи.
Обновление:
Только для продолжения - я понял, что мозаики не очищались белому перед перерисовкой, они вынимаются полностью; белый, которого я видел, является цветом представления, которое это под моим CATiledLayer-поддержанным представлением.
Как быстрое взламывают/устраняют, я поместил UIImageView под UIScrollView, и прежде, чем инициировать перерисовку CATiledLayer-поддержанного представления, я представляю его видимый раздел в UIImageView и позволяю ему показать. Это значительно сглаживает перерисовку.
Если бы у кого-либо есть лучшее решение, как то, чтобы мешать предназначенным перерисовки мозаикам уйти прежде чем быть перерисованным во-первых, я все еще любил бы слышать его.
Вы можете добавить другой слой (возможно, катиледер) за существующим плиткой. (Вроде двойного буферизованного раствора.) Вы бы назвали setneedsdisplay:
на втором слое от таймера, который пожали через несколько секунд, чтобы убедиться, что этот слой не перерезается в то же время, что и спереди слой.
Другой потенциальный вариант - использовать того же делегата для отрисовки содержимого в контекст растрового изображения и замены растрового изображения в резервное хранилище после обновления содержимого. Это должно дать результат без мерцания. При этом я не могу сказать вам, как это можно сделать, и одна хорошая вещь в CATiledLayers заключается в том, что они автоматически генерируют плитки при масштабировании и предварительно генерируют плитки при панорамировании после увеличения.
Я хотел бы посмотреть, как вы реализовать ваше приложение. Я неделями искал пример, в котором используется комбинация UIScrollView и CATiledLayer-back view с множеством настраиваемых нарисованных линий. У Apple есть отличный пример кода, но все он включает в себя изображения, а не штриховые рисунки, поэтому мне это не поможет.
У меня была такая же проблема с iPad.
Решение оказалось проще, чем я думал, и намного проще, чем использование UIImageView для рендеринга дисплея перед перерисовкой ...:
Просто не устанавливайте цвет фона для слоя!
Я установил CATiledLayer аналогичным образом:
layer = [[CATiledLayer alloc] init];
layer.masksToBounds = YES;
layer.contentsGravity = kCAGravityLeft;
//layer.backgroundColor = [[UIColor whiteColor] CGColor];
layer.tileSize = CGSizeMake(1004.0, 1004.0);
layer.levelsOfDetail = 16;
layer.levelsOfDetailBias = 8;
Обратите внимание, что я закомментировал цвет фона слоя, устанавливающего линию, на белый. После этого исчезла проблема с белой пробелой перед перерисовкой!
Дайте мне знать, если кто-нибудь пробовал это сделать.