当前位置: 动力学知识库 > 问答 > 编程问答 >

ios - Why do CGContextSetFillColorWithColor and CGContextFillRects both throw "invalid context 0x0" error?

问题描述:

This code:

 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()

Is throwing these errors:

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 size seems fine, which other posts suggest as the problem. So what else is incorrectly set, please? Thank you.

网友答案:

You need to get the current context after you begin the image context.

(Apparently, when you are calling this code, before you call UIGraphicsBeginImageContext(), there is no current context. Therefore UIGraphicsGetCurrentContext() returns 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()
网友答案:

My bad, these two were simply the wrong way around:

UIGraphicsBeginImageContext( rect.size )
let context = UIGraphicsGetCurrentContext()
分享给朋友:
您可能感兴趣的文章:
随机阅读: