3

버튼의 위치를 ​​애니메이션으로 원을 그리며 회전시킵니다. 이는 훨씬 더 화려한 점을 제외하면 UISwitch과 같은 동작을 만듭니다. 버튼이 회전하지만 0.25 라디안만큼 원하는 위치에서 끝납니다. 버튼이 원점을 중심으로 완벽한 원으로 회전하도록 앵커 포인트를 배치 할 위치를 파악하려고합니다.회전 변환에 올바른 앵커 포인트를 찾는 데 어려움이 있습니다.

다음은 원래 위치에서 반경 120 픽셀의 "궤도"버튼을 만들기 위해 사용하는 코드입니다.

float offsetX=120; 
float offsetY=0; 

enableDisableButton.layer.anchorPoint = 
    CGPointMake(offsetX/enableDisableButton.frame.size.width,     
       offsetY/enableDisableButton.frame.size.height); 

다음 계산 방법을 사용합니다. degrees 90의 인수를 전달 I는 180˚ 위치에서 버튼을 개시 참조 오프셋

-(CGAffineTransform)calculateLabelPositionFromFixedPointWithOffsetClockwiseInDegrees:(float)degrees 
{ 

    float rotation = degrees*(2*M_PI/360); 
    CGAffineTransform transform24 = CGAffineTransformMakeRotation(rotation); 
    NSLog(@"rotation: %f", rotation); 
    return transform24; 
} 

이 작은 0.25 라디안 정도의 수단 (120 개)의 픽셀 거리의 원점으로부터 여전히 90˚로 이동 기대 I 시각적으로 각 버튼의 위치를 ​​확인해야하며 프로그래밍 방식으로 위치를 쉽게 조정할 수 없습니다. 버튼을 회전하는 올바른 방법을 결정하는 데 도움이됩니다.

개체를 회전하는 다른 방법을 시도했습니다. 예를 들어, 화살표가 <--------x이고,이 화살표를 원 주위의 x으로 회전하고 싶습니다. 이 작업에 올바른 앵커 포인트 배치는 무엇입니까? 그것 [1, 0.5]입니까?

이러한 종류의 회전을 수행하는 더 쉬운 방법은 객체를 대칭의 UIView 안에 넣고 원하는 회전 지점에 중심을두고 회전 변환을 지정하는 것입니다. 이 방법이 효과적이지만보기가 두 배로 커야합니다.

< 이것은 앵커 포인트 조정없이 Y를 중심점 X로 돌립니다. 이것은 아날로그 게이지 등 내에서 화살표를 회전시키는 데 매우 유용한 방법입니다.

답변

0

"이런 종류의 회전을 수행하는 더 쉬운 방법은 객체를 대칭 UIView 내에 놓고 원하는 회전 지점에 놓고 회전 변환을 지정하는 것입니다." 이쪽은 괜찮아.

0

예에 enableDisableButton의 앵커 포인트는

CGPointMake(offsetX/enableDisableButton.frame.size.width, 0) 

이 수직으로 버튼 중앙에 있지 즉 것이다. 앵커 포인트를 중심으로 회전하면 버튼이 원하는 위치의 위쪽 또는 아래쪽으로 오프셋됩니다. 변환은 괜찮아 보입니다. 그래서 저는 그것이 앵커 포인트라고 생각합니다. 다음과 같아야합니다.

CGPointMake(offsetX/enableDisableButton.frame.size.width, 0.5f)