UIView類繪圖出現錯誤提示


一:問題:

Jan 16 15:49:53  CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineWidth: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

Jan 16 15:49:53  CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineJoin: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

Jan 16 15:49:53  CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineCap: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

Jan 16 15:49:53  CUBOT Band Ⅲ[2082] <Error>: CGContextSetMiterLimit: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

Jan 16 15:49:53  CUBOT Band Ⅲ[2082] <Error>: CGContextSetFlatness: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

 

二:解決:

1:設置,傳說中是由於:一般式iOS6的時候使用這種方式,iOS7,8也兼容,但是到了iOS9就報了警告。最后驗證,沒鳥用.PS:至少我遇到的問題不是由於它引起的

2:原因簡單分析: drawView方法調用不合理. 使用UIView繪圖,只能在drawRect:方法中獲取相應的contextRef並繪圖。如果在其他方法中獲取將獲取到一個invalidate的ref並且不能用於畫圖。drawRect:方法不能手動顯示調用,必須通過調用setNeedsDisplay 或者 setNeedsDisplayInRect ,讓系統自動調該方法。

由於此處同事是使用了property 屬性的set方法先去初始化數據的並調用了UIBezierPath去繪圖,再去調用drawView,所以造成這樣的錯誤提示,其實程序並不會因此而奔潰,但是這非常影響畫圖速度,造成一定程度上的卡頓,給用戶體驗不好;

1:同事的錯誤做法:(同事寫的)

 

 

 

2:之后我改進了一下

 

 

 

3:錯誤提示消失了

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com