2010-11-19 2 views
0

안녕하세요, 지금 내 상황입니다. Interface Builder에 UIImageView를 추가하고 바늘 (Needle.png)의 .png 이미지로 설정하고, Xcode의 해당 IBOutlet에도 연결했습니다. 내 viewDidLoad에에서원점에 대한 바늘 회전 방법 (소음계 용)?

: 나는 앵커 포인트를 설정하는 방법,

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [needle.layer setAnchorPoint:CGPointMake(0.5, 1)]; 
} 

그리고 나는 또한 인터페이스 빌더에서 버튼을 생성하고 엑스 코드에 IBAction를에 연결 한,이 버튼은 애니메이션 블록을 수행

- (IBAction)animate { 

[UIView beginAnimations:@"rotate" context:nil]; 
[UIView setAnimationDuration:1.0]; 
self.needle.transform = CGAffineTransformMakeRotation(10 * M_PI/180); 
[UIView commitAnimations]; 

} 

그래서 애니메이션 버튼을 누르면 바늘 이미지가 반 시계 방향으로 10 ° 회전하여 시작됩니다. 그러나 끊임없이 변화하는 가치에 기초하여 정확한 각도로 바늘을 일정하게 회전시키기 위해 바늘을 실제로 만들고 싶습니다.

예를 들어 방의 현재 데시벨 수준을 나타내는 데시벨 값이있는 경우 해당 값 (예 : 10 ° == 10dB)을 바늘에 표시하고 싶습니다.이 값이 지속적으로 변경되기 때문에 내 바늘이 시계 방향 또는 반 시계 방향으로 회전하게하십시오.

내가 어떻게 할 수 있는지 아는 사람이 있습니까? 누군가가 나를 도울 수있는 소스 코드를 게시 할 수 있다면 고맙겠습니다.

답변

3

는하지만 정말 에하고 싶은 바늘이 지속적으로 끊임없이 변화하는 값을 기반으로 올바른 각도로 자체를 회전합니다.

"지속적으로 변경되는 값"이 변경되면 회전 값을 변경하십시오.

이 값의 변화에 ​​대한 자극은 무엇입니까? 코드를 배치하여 회전을 변경하십시오.

값이 KVO 인 경우 KVO가 변경 될 때 해당 메커니즘을 사용하여 회전을 변경할 수 있습니다.

또한 바늘 움직임을보다 유동적으로 만들기 위해 애니메이션 블록에서 변경을 원할 수도 있습니다. 예를 들어 값이 1 초에 한 번만 변경됩니다. 애니메이션 블록에서 변경을 수행하여 1 초 동안 변경합니다. 그것들은 바늘의 움직임이 그렇게 덜 거칠 것입니다.

애니메이션을 수행하는 경우 setAnimationBeginsFromCurrentState를 설정하십시오. 따라서 기존 애니메이션의 중간에서 값을 변경 (다시 애니메이션)하면 "올바른 작업을 수행합니다".

+0

"setAnimationBeginsFromCurrentState"클래스 메서드를 사용하여이 질문을 처음으로 물어 보았습니다.이 메서드를 사용하여 어떻게 대답을 할 수 있었는지 알 수있었습니다. ! – cgossain

관련 문제