2014-02-23 4 views
0

나는 x 축을 따라 날짜 그리드를 그리고 y 축을 따라 시간을 그리는 iPad 앱이 있습니다. 그런 다음이 격자의 특정 섹션에서 색상 막대 (CGContext 메서드 사용)를 그립니다 (이미지 참조).CurrentGraphicsContext를 저장하고 복원하면 원래의 상태로 되돌릴 수 있습니까?

막대를 그리는 데 사용되는 데이터를 변경하면 이전 막대가 계속 표시되고 새 막대는 표시되지 않습니다. -CGContextSaveGState-CGContextSaveGState을 사용하면 그리드가 원래 막대가 없도록 이전 데이터를 "삭제"할까요?

enter image description here

답변

0

번호 그냥 그래픽 컨텍스트가 복원 (그래픽 엔진 상태 머신), 엔진은 생산하고 있지 것을.

1

나는 Vincent가 질문에 대답했다고 생각하지만, 지금해야 할 일은 배경 막대 위에있는 모든 막대를 처음부터 다시 그리는 것입니다. 막대 매개 변수가 변경되면 배경과 막대를 그리는보기에 setNeedsDisplay을 호출하십시오. 그런 다음 drawRect에서 눈금과 막대를 다시 만들어야합니다.

+0

-viewWillAppear 및 -viewDidAppear에서 시도했는데 둘 다 그리드 (drawRect) 다시 그리기를 터치하지 마십시오. – SpokaneDude

+0

죄송합니다.이 회신은 너무 늦었습니다. 프로그램의 어느 곳에서나 데이터가 변경된 것을 발견하고 막대를 다시 그려야합니다. 이 시점에서 setNeedsDisplay를 호출해야 drawRect가 차트를 다시 그리게됩니다. – BobSnider