Я искал широкий ответ для ответа. Я все еще прихожу на скорость для iOS-разработчика, поэтому я могу определенно согласиться с тем, что я могу быть без ума отсюда. Однако полная и полная нехватка ответов заставляет меня задаться вопросом, действительно ли есть ответ.iOS: Как я могу повернуть CGLayer?
Вот сделка: я использую CGLayer генерировать достаточно основной вектор многоугольник:
- (CGLayerRef)getASegment
{
CGSize layerSize = s_viewRects[kASegment].size;
CGLayerRef theLayer = CGLayerCreateWithContext (UIGraphicsGetCurrentContext(),
layerSize, nil);
CGContextRef context = CGLayerGetContext (theLayer);
CGContextAddLines (context, s_shapePoints, 7);
return theLayer;
}
s_viewRects является статическим массивом, который держит контейнер прямоугольники, помещенный в общем имидже и s_shapePoints содержит массив структур CGPoint, который отображает искаженный шестиугольник.
Теперь я хочу повторно использовать эту форму. Его нужно перевернуть и повернуть, чтобы соответствовать всем потребностям (для записи это «сегменты» на «светодиодном» дисплее).
Я получаю форму в порядке. Нет проблем.
Проблема заключается в его вращении для повторного использования. Кажется, что нет никакого способа повернуть CGLayer. Множество способов поворота CALayers, но не CGLayers. Я был бы счастлив использовать CALayer, за исключением того, что CALayers, похоже, все ориентированы на растровую графику, и мне нужна векторная графика.
Я уверен, что должен быть очевидный способ решить эту проблему. Единственный способ, который я видел до сих пор, состоит в том, чтобы повернуть весь целевой графический контекст, нарисовать фигуру, а затем не вращать контекст. Это эквивалент поворота дома, чтобы отвинтить лампочку.
Единственный способ, которым я могу заставить его работать, - это фактически преобразовать точки, прежде чем рисовать каждый сегмент отдельно, а это означает, что повторное использование не требуется. Выполнение CGContextRotateCTM во время создания фигуры фактически не приводит к вращению элемента при его отображении.
Любые подсказки?
вздох ... «cloo» был шуткой. –
Математическая речь: поворот дома не отличается от поворота лампочки :) - Вы также можете использовать объект CGPath и добавлять CGAffinetransform каждый раз, когда вы добавляете/рисуете Path, а также CGLayer также фокусируется на растровой графике. –