2012-06-05 4 views
0

저는 CGContext 세계에 초보입니다. NSMutableArray에 CGContext 스택을 만들어야합니다. NSMutableArray에 CGContext 상태를 저장하는 방법은 무엇입니까?

  1. 나는 내가 현재 컨텍스트를 식별

    -(void) drawTo:(CGContextRef) context{}

  2. 첫 번째 인수 등의 방법으로이 상황을 전달하고있어

  3. UIGraphicsBeginPDFContextToData

    로 만든 유효한 PDFContext 있습니다 :

    CGContextRef curCon = context;

  4. NSLog 값 :

    CGContextRef conCopy = UIGraphicsGetCurrentContext();

  5. 가 그럼 난 내있는 NSMutableArray에 추가 :

    context:<CGContext 0x6b79d60>

  6. 가 그럼 난 현재 컨텍스트의 복사본을 시도

    [myMutableArray* addObject:(id)conCopy];

  7. 그러면 I가있는 NSMutableArray의 콘텐츠 목록 :

    after an object added:<__NSArrayM 0x6b7e850>(<CGContext 0x6b79d60>)

및 I는 부가가치가 원래 복사본을 인수로서 이러한 방법으로 전송되지 같은 컨텍스트는 것을 알 수있다.

무엇이 여기에 있습니까? 아니면 NSMutableArray에 현재 컨텍스트의 상태를 저장할 수 없습니까? 경로가 저장되지 않을 것이라고 생각합니다. 괜찮습니다. 나는 구원받을 수있는 현재 상황에 관해 무엇이든 모두를 저장할 필요가있다. 감사합니다.

답변

2

직접 할 수 없습니다. 그러나 당신이 해결하려고하는 진짜 문제는 무엇입니까? CGContextSaveGState()은 현재 상황의 범위 내에서만 요구하는 것을 수행합니다. CGLayer은 효과적으로 운반 할 수있는 컨텍스트를 효과적으로 만들 수 있지만 (여전히 직렬화 할 수는 없지만)

실제 경로가 아닌 상태를 복사 가능한 형식으로 저장하는 것이 목표라면 모든 CGContextGet... 메서드를 호출하고 결과를 저장하여 복사 가능한 개체를 만들 수 있습니다. 그런 다음 CGContextSet...으로 전화하여 새로운 문맥을 만들 수 있습니다. 지루하지만 어려운 일이 아닙니다. (왜 그런지 질문을 제기하지만 아주 이상한 일이라고 느낍니다.)

+0

에서 부탁드립니다. 지금은 CGContextSaveGState()를 사용할 것입니다. 왜냐하면 지금은 하나의 컨텍스트에서만 작업하고 있기 때문입니다. – TrekOnTV2017

0

UIGraphicsGetCurrentContext 복사본을 만들지 않습니다. 반환 된 컨텍스트에는 UIGraphicsBeginPDFContextToData을 사용하여 만든 컨텍스트가 있습니다.

+0

감사합니다. 복사본을 만들고 NSMutableArray에 저장하는 방법이 있는지 알고 계십니까? 또는 사본이 없으면 그 상태 정보는 – TrekOnTV2017

관련 문제