2012-04-10 2 views
0

나는 간단한 해결책이 있기를 바랍니다. 단추, 타이머, 프레임, cgaffinetransformrotations 및 지연을 사용하여 흔들 효과를 만들려고합니다. 버튼을 돌릴 때 버튼의 프레임을 설정하여 y를 10 픽셀 정도 줄이거 나 늘리면 회전이 버튼의 프레임을 평소보다 크게 만듭니다. 최종 결과는 스크린을 삼킬 때까지 지속적으로 증가하는 버튼입니다.프레임의 CGPoint 만 설정하십시오.

나는 상향 및 하향 움직임 cgaffinetranslations를 만들려고했으나 transform 속성 (회전이 사용하는 것과 동일한)을 사용합니다. 결과는 매우 불안정하고 사실적이지 않은 봅입니다.

나는 하드 코드 된 너비와 높이를 지정해도 회전하고 커질 때 축소되도록하기 때문에 너비와 높이를 지정하지 않고 프레임의 원점 구성 요소를 설정하기 만하면됩니다. 그것은 다시 평형에 다가 섰다.

아이디어가 있으십니까?

감사합니다.

코드 :

- (void)movePlay{ 
[self performSelector:@selector(moveDown:) withObject:play]; 
[self performSelector:@selector(rotateRight:) withObject:play afterDelay:0]; 
[self performSelector:@selector(moveUp:) withObject:play afterDelay:0.5]; 
[self performSelector:@selector(rotateLeft:) withObject:play afterDelay:1]; 

} 

- (void)moveUp:(UIButton*)log{ 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:.5]; 
log.transform = CGAffineTransformMakeTranslation(0, -20); 
[UIView commitAnimations]; 

} 

- (void)rotateRight:(UIButton*)log{ 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1]; 
log.transform = CGAffineTransformMakeRotation(0.0174532925*10); 
[UIView commitAnimations]; 

} 
+0

그냥 힌트와 먼저 결합 "속성을 변환하는 경우 경고 (안 신원,이 속성의 값을 변환 프레임)는 정의되어 있지 않으므로 무시해야합니다. " 의미, 아마 프레임 대신 경계를 설정해야합니다. – lukasz

답변

1

이 그냥 생각입니다. 모든 별도의 변환을 함께 결합 해보십시오. 그래서 그 대신 독립적으로 커밋의

log.transform = CGAffineTransfor..., 

는 아이폰 OS 참조 라이브러리에서

CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2); 
CGAffineTransformRotate(CGAffineTransform t1, CGFloat angle); 
etc. 
+0

일했습니다! 감사! – David