Я прочитал то, что, как я считаю, является соответствующими частями двумерного программирования кварца, но не могу найти ответ на следующее (они, похоже, не говорят много о iOS в документе):Как создать CGLayer из UIView для рисунка за пределами экрана
В моем приложении отображается чертеж в формате UIView
. Время от времени я должен каким-то образом обновить чертеж, например. измените цвет заливки одной из фигур (я сохраняю CGPathRefs
до важных фигур, чтобы иметь возможность перерисовывать их с другим цветом заливки позже). Как описано в разделе «Рисование С CGLayer» на странице 169 вышеупомянутого документа, я думал рисовать весь рисунок в виде CGContext
, что я бы получить от CGLayer
, например, так:
CGContextRef offscreenContext = CGLayerGetContext(offscreenLayer);
Тогда я мог бы сделать мое обновление за кадр в CGContext
и сделать CGLayer
в мой UIView в DrawRect UIView
«s: метод, например, так:
CGContextDrawLayerAtPoint(viewContext, CGPointZero, offscreenLayer);
проблемы я имею, где я могу получить свою CGLayer
от ? Мое понимание заключается в том, что я должен сделать это с помощью CGLayerCreateWithContext
и поставить CGContext
в качестве параметра, из которого он наследует большинство его свойств. Очевидно, что правильный контекст будет контекст UIView
, что я получаю с
CGContextRef viewContext = UIGraphicsGetCurrentContext();
, но если я не ошибаюсь, я могу получить только, что в drawRect
: метод, и он не является допустимым предположить, что контекст, который я даю там, будет таким же в следующий раз, когда будет вызван метод, т. е. я могу использовать только этот CGContext
локально внутри метода.
Итак, как я могу получить CGContext
, что я могу использовать, чтобы инициализировать мой CGLayer
создать закадровый CGContext
рисовать в, а затем сделать весь слой обратно в мои UIView
«s CGContext
?
PS: Пока вы на нем; если что-либо выше не имеет смысла или не является нормальным, сообщите мне. Я только начинаю опускать голову над кварцем 2D.
Я также застрял в проблеме CGLayer, я не понимаю, как писать в нее в моих затронутых функциях, можете ли вы взглянуть на мое сообщение http://stackoverflow.com/questions/11341763/how-to- use-cglayer-for-optim-drawing – Ranjit
CGContextBeginPath() и CGContextClosePath() принимают параметр контекста. – Ant