CGContextSaveGstate: invalid context 0x0

1853 단어
이 글을 쓰는 것은 삼가 나를 6시간 가까이 괴롭혔던 버그를 기념합니다...
어제 xcode 콘솔에서 경고 로그를 인쇄하는 것을 무심코 보았습니다.한마디로 결벽증이 없는 프로그래머는 좋은 프로그래머가 아니다. 나는 그것을 없애고 싶다.
콘솔 로그
CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSetBlendMode: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSetBlendMode: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

인터넷에서 CGContextSaveGState 오보에 관한 많은 문제를 보았는데 다음과 같은 몇 가지가 있다. 1. statusBar의 문제 양식에 관한 문제.2. 드로잉 정보는 drawRect에서 수행되지 않습니다.(이상 두 가지 모두 도모가 해결할 수 있는 방법을 얻을 수 있다.)
포인트가 왔어요.
내 공사에서 첫째, 그림을 그리지 않았다.2. 상태 표시줄을 수정하지 않았습니다. 、 。
원인
나는 채팅 배경 기포를 쓰고 그림을 펼칠 때 다음과 같은 문제가 생겼다. 나는 그림의 넓이를 얻었다. (20,20).UIEdgeInsetsMake(16, 7, 3, 13)를 설정합니다.좌우의 스트레칭 테두리를 7 + 13 = 20으로 딱 맞췄어요.즉 좌우로 늘어나는 구역이 0으로 설정된 것이다. 그래서 그림 그리는 데 오류가 생겨서 위아래 문장을 얻을 수 없는 문제가 생겼다. (왜 좌우가 0이 되어도 그림이 정상적으로 늘어날 수 있는지 모르겠다) 해결 방법은 당연히 UIEdge Insets Make(16, 6, 3, 13)이다.좌우로 늘어나는 구역에 픽셀 포인트를 남기면 됩니다.
            UIImage * rightBubble = [UIImage imageNamed:@"message_sender_background_normal"];
//            UIEdgeInsets edgeInsets = UIEdgeInsetsMake(16 ,7, 3, 13);
            UIEdgeInsets edgeInsets = UIEdgeInsetsMake(16 ,6, 3, 13);
            UIImage *img =  [rightBubble resizableImageWithCapInsets:edgeInsets resizingMode:UIImageResizingModeTile];
            self.messageBackgroundImageView.image = img;

좋은 웹페이지 즐겨찾기