2013-04-24 4 views
0

Я использую следующий код из предыдущего ответа, чтобы создать новый UIImage из объединения UIImageView и UITextView.Создание UIImage из UIImageView и UITextView

UIView *parentView = [[UIView alloc] initWithFrame:CGRectZero]; 
[parentView addSubview:self.imagePreview]; 
[self.imagePreview setFrame:CGRectMake(0, 0, 100, 100)]; 
[parentView addSubview:self.memeTextFieldTop]; 
[self.memeTextFieldTop setFrame:CGRectMake(20, 20, 80, 20)]; 
[parentView sizeToFit]; 

UIGraphicsBeginImageContext([parentView bounds].size); 
[[parentView layer] renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Проблема, кажется, что я в настоящее время получаю следующие ошибки, и я не уверен, как идти об их решении.

<Error>: CGContextSaveGState: invalid context 0x0 
<Error>: CGContextSetAlpha: invalid context 0x0 
<Error>: CGContextSaveGState: invalid context 0x0 
<Error>: CGContextGetBaseCTM: invalid context 0x0 
<Error>: CGContextConcatCTM: invalid context 0x0 
<Error>: CGContextSetBaseCTM: invalid context 0x0 
<Error>: CGContextSaveGState: invalid context 0x0 
<Error>: CGContextSetAlpha: invalid context 0x0 
<Error>: CGContextSaveGState: invalid context 0x0 
<Error>: CGContextConcatCTM: invalid context 0x0 

Любые идеи, как решить эту проблему?

+0

Я вижу, что вы [parentView sizeToFit]; Вы уверены, что кадр не CGRectZero? –

+0

thats 'из-за размера кадра parentView по-прежнему остается равным нулю. Проверьте рамку с NSLog. – x4h1d

ответ

1

В журнале вы не имеете правильный контекст для рисования

Согласно документации

UIGraphicsGetCurrentContext()

текущий графический контекст равен нуль по умолчанию. Перед вызовом метода drawRect: view, объекты просмотра вставляют действительный контекст в стек, делают его актуальным. Однако, если вы не используете объект UIView для выполнения вашего чертежа , вы должны вручную ввести действительный контекст в стек , используя функцию UIGraphicsPushContext.

Вызывая UIGraphicsPushContext() с созданным контекстом, ваши другие методы могут получить доступ к этому контексту с помощью UIGraphicsGetCurrentContext().

Если вы звоните UIGraphicsGetCurrentContext() вне DrawRect: и не установили контекст явно с UIGraphicsPushContext(), текущий графический контекст не определен-и, конечно, не безопасно использовать

Смежные вопросы