Построение CAShapeLayer из нескольких CGpaths
У меня есть CAShapeLayer, который принимает свою форму от path. Это создает объект слоя, которым можно управлять, например перемещать и вращать. Моя проблема заключается в том, что мне нужно, чтобы объект слоя состоял из нескольких путей. Например, представьте себе карту Соединенных Штатов; там есть главная фигура, а также Аляска. Обе фигуры не связаны, но они являются одной и той же сущностью, и мне нужно, чтобы они были одним объектом в одном CAShapeLayer, так что когда я перемещаю слой, мы и Аляска перемещаемся вместе.
UIBezierPath* ahPath = [self mydPath];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = ahPath.CGPath;
...
[self.layer addSublayer:shapeLayer];
2 ответа:
В случае, который вы описываете, я бы сделал слой CAShapeLayer, представляющий США, и отдельный слой CAShapeLayer, представляющий государство, а затем добавил бы слой state к слою US. Перемещение слоя США автоматически переместит слой Штатов вместе с ним. Преимущество в том, что вы можете раскрасить США и Штаты по-разному.
Также имейте в виду, что
CGPath
может содержать несколько подпутей, поэтому одинCGPath
может содержать США и Аляску. Проверьте обзор в Cgpath Reference.