2014-12-03 1 views
6

В портретном режиме (первый раз рисунок)полностью стирая UIBezierPath & CAShapeLayer нарисованных элементов

enter image description here

После поворота на альбомный, почему старые формы:

enter image description here

Я использую UIBezierPath & CAShapeLayer нарисовать круги & линии в обычном UIView слое. Проблема заключается в том, что можно успешно провести новые круги &, после того как устройство повернуто, я не могу удалить старые фигуры. Новые формы, нарисованные после вращения устройства, идеальны, мне просто нужно удалить с экрана те старые фигуры, которые склеиваются на экране. Изображения прилагаются.

+0

Пожалуйста, включите соответствующий код (например, что вы делаете при вращении). – Rob

ответ

9

Вы можете либо удалить предыдущие CAShapeLayerremoveFromSuperlayer), либо заменить path предыдущего CAShapeLayer. Казалось бы, вы добавляете новый слой, не удаляя старый, но, конечно, невозможно сказать без исходного кода.

+0

спасибо за ваше предложение, это подтолкнуло меня к правильной дорожке – ystack

3

aah! найдено решение с использованием rootView.layer.sublayers = nil удалены все предыдущие формы

+4

Я бы рад, что ваша техника сработала, но я все же склоняюсь к сохранению ваших собственных слабых ссылок на слои, которые вы добавили, а затем называя их «removeFromSuperlayer» , Этот метод установки 'sublayers' на' nil' кажется мне немного тяжелым. Плюс я видел сообщения о том, что есть проблемы с этой техникой (в поведении этой техники могут быть некоторые отклонения версии ОС). Тем не менее, я рад, что вы решили свою проблему. – Rob