나는 그 답을 찾기 위해 멀리서보고있다. 나는 여전히 iOS 개발자의 속도를 높이기 위해 올라오고 있으므로, 내가 여기서 어색함을 느낄 수는있다. 그러나 거기에 대한 답변이 완전하고 완전히 부족하여 실제로 대답이 있는지 궁금합니다. 나는 상당히 기본적인 벡터 다각형 생성하는 CGLayer를 사용하고 있습니다 : 여기 iOS : CGLayer를 어떻게 회전시킬 수 있습니까?
는 거래의- (CGLayerRef)getASegment
{
CGSize layerSize = s_viewRects[kASegment].size;
CGLayerRef theLayer = CGLayerCreateWithContext (UIGraphicsGetCurrentContext(),
layerSize, nil);
CGContextRef context = CGLayerGetContext (theLayer);
CGContextAddLines (context, s_shapePoints, 7);
return theLayer;
}
s_viewRects이 전체 이미지에 배치로, 컨테이너의 구형을 보유하고 정적 배열을하고, s_shapePoints가 포함되어 있습니다 왜곡 된 육각형을 매핑하는 CGPoint 구조체의 배열.
이제이 모양을 다시 사용하고 싶습니다. 모든 용도에 맞게 뒤집어서 회전해야합니다 (레코드의 경우 "LED"디스플레이의 "세그먼트"입니다).
모양이 좋아요. 문제 없어.
문제는 재사용을 위해 회전시키는 데 있습니다. 실제로 CGLayer를 회전시킬 방법이없는 것 같습니다. CALayers를 회전시키는 방법은 많지만 CGLayers는 회전시키지 않습니다. CALayer가 모두 래스터 그래픽에 중점을 둔 것처럼 보이고 벡터 그래픽이 필요하다는 점을 제외하고는 CALayer를 사용해도 행복합니다.
확실한 해결 방법이 있어야합니다. 내가 지금까지 본 유일한 방법은 전체 대상 그래픽 컨텍스트를 회전하고, 모양을 그린 다음 컨텍스트를 회전 해제하는 것입니다. 전구를 돌려서 집을 돌리는 것과 같습니다.
내가 작동하도록 할 수있는 유일한 방법은 각 세그먼트를 별도로 그리기 전에 포인트를 실제로 변환하는 것인데, 이는 다시 사용할 수 없음을 의미합니다. 셰이프를 만드는 동안 CGContextRotateCTM을 수행해도 실제로 회전 된 요소가 표시되지 않습니다.
실마리가 있습니까?
한숨 ... "cloo"는 농담이었습니다. –
수학적으로 말하기 : 집안을 돌리는 것이 전구를 돌리는 것과 다르지 않습니다 :) - 경로를 추가하거나 그릴 때마다 CGPath 객체를 사용하고 CGAffinetransform을 추가 할 수 있으며 CGLayer는 래스터 그래픽에도 중점을 둡니다. –