2012-06-02 2 views
0

Я новичок в Quartz 2D и мире контекстов. почему этот код рушится?Сбой CGContextStrokePath (контекст). Зачем?

NSMutableData* pdfData = [[NSMutableData alloc] initWithLength:1000]; 

CGRect bounds = (CGRectMake(100, 100, 100, 100)); 
NSDictionary* documentInfo = nil; 

UIGraphicsBeginPDFContextToData (pdfData, 
           bounds, 
           documentInfo); 

CGContextRef context = UIGraphicsGetCurrentContext(); 
NSLog (@"context: %@", context); 

// Drawing lines with a white stroke color 
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0); 
// Draw them with a 2.0 stroke width so they are a bit more visible. 
CGContextSetLineWidth(context, 2.0); 

// Draw a single line from left to right 
CGContextMoveToPoint(context, 10.0, 30.0); 
CGContextAddLineToPoint(context, 310.0, 30.0); 
CGContextStrokePath(context); 

[pdfData release]; 

Код врезается в CGContextStrokePath (контекст) с EXC_BAD_ACCESS

Спасибо.

+0

Редактировать свой вопрос, чтобы вставить трассировку стека. –

ответ

1

Прежде чем рисовать в графическом контексте PDF, вам необходимо создать страницу с UIGraphicsBeginPDFPage или UIGraphicsBeginPDFPageWithInfo.

CGRect bounds = CGRectMake(0, 0, 100, 100); 
UIGraphicsBeginPDFContextToData(pdfData, bounds, nil); 
UIGraphicsBeginPDFPage(bounds, nil); 
+0

да действительно. Спасибо. знаете ли вы, что nsmutabledata * PdfData сохраняется в контексте? или это то, что мне нужно сохранить отдельно. (Мне нужно иметь один контекст, который записывается разными классами один за другим, а затем закрывает его с полученными данными pdf). – TrekOnTV2017

+0

Если Apple придерживается правил, оно сохраняется до тех пор, пока вы не назовете 'UIGraphicsEndPDFContext', который требуется и в настоящее время отсутствует в вашем коде. Я почти уверен, что они придерживаются правил. – Codo

+0

спасибо! вы знаете, как получить доступ к pdfData после (или только раньше?) UIGraphicsEndPDFContext. Мне нужно отправить его обратно вызывающему абоненту, когда я закончил рисовать в контексте (так что из него может быть создан либо файл PDF, либо просто повторно использоваться как необработанные данные в формате pdf) – TrekOnTV2017