내 응용 프로그램에서는 UIViewController가 서브 클래 싱 된 UIView 및 기타 여러 요소와 함께 포함되어 있습니다. 내 drawRect:
메서드에서 DrawView라고하는 UIView 내부에서 표 그리드 유형을 그리고 그리드에 CGPoint 배열을 플로트합니다. 사용자가 화면을 탭하면 touchesBegan:withEvent:
을 호출하고 그리드에서 가장 가까운 점을 터치하여 확인하고 drawRect:
메서드가 그려주는 배열에 점을 추가하고 [self setNeedsDisplay]
을 호출합니다. 사용자가 화면에서 손가락을 움직이면 마지막 위치에서 포인트가 변경되었는지 확인하고 포인트를 업데이트하고 필요에 따라 [self setNeedsDisplay]
을 호출합니다.Core Graphics-drawRect : 자주 호출되지 않음
이것은 시뮬레이터에서 잘 작동합니다. 그러나 실제 iPhone에서 실행하면 매우 천천히 움직입니다. 손가락을 움직이면 점을 그리는 데 뒤 떨어진다. 포인트를 다른 스레드에 배치 할 위치에 대한 계산을 실행하면 성능이 향상 될 수 있음을 읽었습니다. 이 사실을 알고있는 사람은 누구인가? 지연을 줄이기위한 다른 제안?
좋은 답변입니다. 하지만 어떻게 할거 니? 사용자별로 레이어가있는보기 또는 여러 개의 하위 레이어가있는보기 하나씩을 볼 수 있습니까? –
@Sandro가 작동 할 수도 있지만, CALayers 대신 UIView 객체를 사용합니다. CF 유형 (UIImage vs CGImageRef 등) 대신 ObjC 유형을 처리하기 때문에 제스처 인식기를 연결할 수 있습니다. –
감사합니다. 나는 신기한 일이며, CALayer 오브젝트 나 복합 뷰가 무엇인지 전혀 알지 못합니다. [CALayer에 관한 Apple의 문서] (http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html)를 찾았지만 권장하는 다른 튜토리얼이나 설명서가 있습니다. 이 것들에 대해 배우고, 그걸 사용하여 어떻게 그리는가? –