Z-уровень графики в UIView
Я работаю над приложением для рисования, где пользователь должен уметь заполнять заблокированные области и просто рисовать линии при движении пальца.
Заблокированные области предоставляются в виде SVG (путей), поэтому я использую библиотеку SVGKit для их отображения на экране (как CAShapeLayers в представлении). Затем в основном используйте fillColor на соответствующем слое, чтобы заполнить его на ощупь.
Однако для рисования линий в игру вступает Core Graphics (CGContextStrokePath), и линии всегда рисуются ниже всего, что содержится в иерархии CALayers. Так что в основном ниже заполненных областей.
То, чего я пытаюсь достичь, - это система, в которой последний нанесенный рисунок всегда находится сверху. Таким образом, применение заливки переопределяет любые линии в области, а на следующем рисунке линия показывает ее выше заполненной зоны.
Кажется, что z-индекс CGLayer меньше, чем у CALayer, и мне нужен какой-то другой подход для моей цели...
1 ответ
CAShapeLayer предназначен для хранения экземпляров CGPath и их рендеринга, поэтому я бы добавил CAShapeLayer в той точке вашей иерархии слоев, где вы хотите, чтобы он появлялся, и изменил для нее свойство CGPath.