Построение CAShapeLayer из нескольких CGpaths


У меня есть CAShapeLayer, который принимает свою форму от path. Это создает объект слоя, которым можно управлять, например перемещать и вращать. Моя проблема заключается в том, что мне нужно, чтобы объект слоя состоял из нескольких путей. Например, представьте себе карту Соединенных Штатов; там есть главная фигура, а также Аляска. Обе фигуры не связаны, но они являются одной и той же сущностью, и мне нужно, чтобы они были одним объектом в одном CAShapeLayer, так что когда я перемещаю слой, мы и Аляска перемещаемся вместе.

    UIBezierPath*    ahPath = [self mydPath];     

    CAShapeLayer  *shapeLayer = [CAShapeLayer layer];

    shapeLayer.path = ahPath.CGPath;

    ...

    [self.layer addSublayer:shapeLayer];
2 2

2 ответа:

В случае, который вы описываете, я бы сделал слой CAShapeLayer, представляющий США, и отдельный слой CAShapeLayer, представляющий государство, а затем добавил бы слой state к слою US. Перемещение слоя США автоматически переместит слой Штатов вместе с ним. Преимущество в том, что вы можете раскрасить США и Штаты по-разному.

Также имейте в виду, что CGPath может содержать несколько подпутей, поэтому один CGPath может содержать США и Аляску. Проверьте обзор в Cgpath Reference