사용자 지정 UIView가 포함 된 UIScrollView가 있습니다. 내 UIView에서 CGContextStrokePath를 사용하여 경로를 그리는 drawRect를 재정의했습니다. 확대/축소가 작동하는 방식을 약간 변경하고 싶습니다. 핀치 축소는 화면에 더 많은 경로를 표시합니다. 이것은 내가 원하는 것이지만 줄 너비를 줄이려면 축소하지 말고 축소하여 사용자에게 명확하게 전달하십시오.UIScrollView 선 너비를 변경하지 않고 CGContextStrokePath로 확대/축소
는 난 그냥이 (타겟이 _lineView라고 myUIView 줌)
-(void)scrollViewDidZoom:(UIScrollView *)pScrollView
{
_lineView.zoomScale = _scrollView.zoomScale;
[_lineView setNeedsDisplay];
}
다음 당신으로 일정한 선폭의 효과를주고 내 _lineView의 drawRect 방법에 적절한 라인 스트로크 크기를 계산을 할 것이라고 생각 축소.
이것은 매우 느리고 drawrect는 초당 몇 번이라도 호출되도록 최적화되지 않았기 때문에 이것이 예상됨을 읽었습니다.
그런 다음 GLKView 대신 OpenGL에서 모든 것을 직접 렌더링하기 시작했습니다. 이 문제는 모든 확대/축소 및 패닝을 직접 구현해야한다는 것입니다 (UiScrollView에서 무료로 얻을 수있는 멋진 확대/축소 및 팬 반송 효과 포함). OpenGL, 버튼 등에서 사용하고자하는 모든 컨트롤을 구현해야합니다.
Quartz2d를 계속 사용하는 방법이 있습니까? 나는 opengl이 나에게 많은 힘을 줄 것이라고 느낀다.하지만 내가 그 길로 가면 내 앱의 나머지 부분을 끝내는 데 더 오래 걸릴 것이다.
감사.나는 CGPath를 그리기 위해 이것을 따르고 선이 안개를 발생시키지 않도록 줌아웃한다. 그러나, 나는 다른 색상과 lineWidth로 그려진 CGPath의 숫자를 가지고있다. 그런 다음 각 CGPath에 대해 각각 새로운 CAShapeLayer를 할당 한 다음 각 레이어를 뷰의 레이어 subLayer로 추가해야합니다. 너무 많은 하위 레이어를 추가하면 성능 문제가 발생합니까? 어쩌면 내가 걱정할 것 같아. – Yeung
예. 결국 드로잉은 iPhone 4와 같은 구형 장치에서 느려지므로 조심하십시오. 경로가 얼마나 큰지에 달려 있습니다. 라인 세그먼트가 몇 개인 경우 문제가되지 않습니다. – Imran