2016-08-21 3 views
-1

Этот код:Почему CGContextSetFillColorWithColor и CGContextFillRects вызывают ошибку «недопустимый контекст 0x0»?

let rect = CGRectMake(0.0, 0.0, 16.0, 16.0) 
    let context = UIGraphicsGetCurrentContext() 

    UIGraphicsBeginImageContext(rect.size) 
    CGContextSetFillColorWithColor(context, color.CGColor) 
    CGContextFillRect(context, rect) 

    let image = UIGraphicsGetImageFromCurrentImageContext() 

    UIGraphicsEndImageContext() 

бросает эти ошибки:

MakeImage[60890] <Error>: CGContextSetFillColorWithColor: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
MakeImage[60890] <Error>: CGContextFillRects: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 

CGRect размер кажется, хорошо, что other posts предложить в качестве проблемы. Так что же еще неправильно установлено, пожалуйста? Спасибо.

+0

Говорят, что «контекст», предоставляемый функциями CoreGraphics, равен нулю. Это означало бы, что нет текущего контекста для рисования. – dreamlax

ответ

4

Необходимо ввести текущий контекст после вы начинаете контекст изображения.

(. По-видимому, когда вы вызываете этот код, прежде чем звонить UIGraphicsBeginImageContext(), нет текущего контекста Поэтому UIGraphicsGetCurrentContext() возвращает не NIL.)

let rect = CGRectMake(0.0, 0.0, 16.0, 16.0) 
UIGraphicsBeginImageContext(rect.size) 

let context = UIGraphicsGetCurrentContext() 

CGContextSetFillColorWithColor(context, color.CGColor) 
CGContextFillRect(context, rect) 

let image = UIGraphicsGetImageFromCurrentImageContext() 

UIGraphicsEndImageContext() 
+0

Аполы @ КуртРевис, мы оба отправили один и тот же ответ одновременно. Здесь почти полночь, и я делаю глупые ошибки. Думаю, время для постели. Спасибо! –

0

Моего плохо, эти два были просто неправильный путь вокруг:

UIGraphicsBeginImageContext(rect.size) 
let context = UIGraphicsGetCurrentContext() 
Смежные вопросы