しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

UIGraphicsGetCurrentContext()がnilを返す事があった

iPhoneアプリを作ってる時にUIGraphicsGetCurrentContext()がnilを返してハマったのでメモ。

前回の記事にあるUIViewをUIImageに変換する際に起きた問題。
llcc.hatenablog.com

下のようなコードを書いたらnilが返ってきた。

let view = UIView()
view.toImage()
// CGContextTranslateCTM: invalid context 0x0. This is a serious error. というエラーも発生。  

調べた所toImage内のUIGraphicsGetCurrentContext()nilを返している事が原因らしい。
色々試したところviewのwidthとheightが0になってる事が原因だと判明。
widthとheightをちゃんとセットしたら動いてくれた。

let view1 = UIView(frame: CGRectMake(0.0, 0.0, 1,0, 1,0)) // これなら動く
view1.toImage()

let view2 = UIView(frame: CGRectZero) // Zeroだとダメ
view2.toImage()

let view3 = UIView(frame: CGRectMake(0.0, 0.0, 0,0, 1,0)) // widthだけ0の時もダメ
view3.toImage()