코어 그래픽을 사용하여 아이폰 용 차트 응용 프로그램을 개발하고 있습니다. 내 요구 사항은 다음과 같습니다. drawRect 메서드 내에서 모든 그리기 함수를 구현했습니다. 차트에서 일부 업데이트가 발생하면 [self setNeedsDisplay : true]를 호출해야하며 처음부터 drawRect 메서드를 호출합니다. 즉, drawRectMethod 내의 모든 메서드를 실행한다는 의미입니다. 따라서 터치 이벤트 그리기가 그리 매끄럽지 않습니다. 어떤 특정 부분을 drawRect 메서드로 그릴 필요가 있습니다. 핵심 그래픽으로도 가능합니까?별도의 레이어 - 객관적인 코어 그래픽
답변
"분리 된 레이어"의 의미는 명확하지 않지만, 그게 -drawRect:
은 현재 많은 계산을하는 크고 복잡한 함수입니다. 너무 많이 호출되기 때문에 너무 느리게 실행됩니다 .CALayer는 언급하지 않았으므로 여기서는 실제 레이어가 아니라고 가정합니다.
이것에 대한 해결책은 0123에서 계산을 이동하는 것입니다.. 데이터가 실제로 변경 될 때만 필요한 모든 것을 계산해야합니다. -drawRect:
에서는 미리 계산 된 값을 사용하는 것이 훨씬 빠릅니다.
예를 들어, Core Graphics를 언급 했으므로 CGPath와 같은 것을 사용한다고 가정합니다. 데이터가 변경된 경우에만 CGPath를 계산 한 다음 CGPath를 ivar에 저장해야합니다. -drawRect:
에 CGPath를 그려야합니다. CGPath가 특히 복잡하기 때문에 CGImage로 미리 렌더링 한 다음 CGImage를 합성하는 것이 좋습니다.
가능한 경우 iPhone에서 Core Graphics를 완전히 사용하지 말고 Photoshop에서 이미지를 사전 렌더링 한 다음 Resources 폴더에 저장해야합니다. 3G는 복잡한 Core Graphics 프로세싱을 따라 잡기 위해 컴퓨팅 성능을 필요로하지 않습니다. 이는 Mac에서 최근에 발표 한 Apple의 권장 사항을 뒤집은 것입니다. 사전 렌더링 된 이미지를 사용하지 않고 그라디언트와 경로를 장려하며 3GS를 사용하면 훨씬 빠른 프로세서로 인해 중요성은 줄어들지 만 여전히 iPhone, 그리고 아마도 더 높은 해상도의 iPhone 디스플레이가 출시 될 때까지있을 것입니다. 동적 이미지가있는 경우에는 물론 불가능하지만 정적 이미지의 경우이를 명심해야합니다.
편집 :이
먼저, 실제적인 경우는 더러 그 부분을 그리기하고 있는지 확인하십시오. -drawRect:
은 더러운 직사각형을 전달합니다. 특정 요소가 해당 직사각형과 교차하지 않으면 다시 그릴 필요가 없습니다. 마찬가지로 업데이트해야 할 부분을 나타내려면 -setNeedsDisplayInRect:
을 사용해야합니다. 보기를 겹치지 않는 사각형 (또는 가끔씩 겹치는 사각형)으로 쉽게 나눌 수 있다면 잘됩니다.
독립적으로 계산하려는 다양한 중첩 구성 요소로 구성된보기가있는 경우 각각을 CALayer
에 그릴 수 있고 뷰에 레이어를 첨부 할 수 있습니다 (보기 자체에는 아무 것도 그리지 않음).). 그런 다음 변경된 계층에서만 -setNeedsDisplay
으로 전화 할 수 있습니다. 이것은 내가 수직선의 예를 위해 사용하는 것입니다. CALayer
선의 너비와 뷰의 높이를 만들고 배경색을 선 색으로 설정 한 다음 원하는 위치에 뷰에 연결합니다. 그 다음 줄을 이동하는 것은 매우 빠릅니다 (또는 변환을 사용하여 줄을 회전시키는 것). 나중에 줄을 제거하는 것은 간단합니다. 더 멋진 선 그리기 (앤티 앨리어싱 등)를 원한다면 레이어를 더 넓게 만들 수 있고 실제로 레이어 내부에 선을 그릴 수 있습니다. 필요한 경우 레이어가보기만큼 클 수 있습니다.
Core Animation Programming Guide 광범위한 CALayer
에 문서와 사용 방법이 있습니다.
- 1. 객관적인 c에 다른 레이어 사용
- 2. 아이폰 코어 그래픽, 마스크
- 3. 코어 그래픽 색상 컨텍스트
- 4. 코어 그래픽 색상 블렌딩
- 5. iPhone 애니메이션 코어 그래픽
- 6. iphone의 코어 그래픽
- 7. 코어 그래픽 사용의 이점
- 8. 코어 애니메이션의 하위 레이어 검색
- 9. 코어 그래픽 - 각도로 선 그리기
- 10. 코어 그래픽 RAW 파일 작성
- 11. 코어 그래픽 애니메이션 드로잉 (iPhone)
- 12. 여러 프로젝트에 별도의 JPA 레이어 통합
- 13. 코어 애니메이션 : iPhone의 한면에서 레이어 크기 조정
- 14. 코어 애니메이션 임의의 점을 중심으로 레이어 회전
- 15. CGS 방법 설명서 (코어 그래픽 서비스)
- 16. 코어 그래픽 : 일반 그래디언트가있는 패스 그리기
- 17. 코어 데이터가있는 Xcode 4의 그래픽 포지티브 빌더
- 18. 코코아 : 석영, 코어 그래픽, 컨텍스트 및보기. 어머!
- 19. iphone의 코어 그래픽 메모리 사용량 줄이기
- 20. 코어 그래픽 드로잉 모양 및 텍스트 블렌딩
- 21. iOS SDK 코어 그래픽 게임 개체 회전?
- 22. 레이어 레이어 불투명도
- 23. UIView는 Core Animation과 어떻게 통합됩니까? 레이어 호스팅 또는 레이어 기반보기?
- 24. 색 공간을 혼합 할 때 패널티가 있습니까? (코어 그래픽)
- 25. 코어 그래픽 기능이있는 iPad 장치에서 이상한 충돌이 발생합니다.
- 26. 석영 2d/코어 그래픽 : 텍스트를 그리는 올바른 방법은 무엇입니까?
- 27. 코어 그래픽 경로의 변형을 방지하거나 보정하는 방법은 무엇입니까?
- 28. Quartz 2d 파이썬 데모에서 순수 코어 그래픽 C
- 29. 팁 메모리 관리, 객관적인 c
- 30. 어드밴티지 데이터 액세스 레이어