2012-07-25 7 views
3

아직 UIAnimations에 대해 배우고 있습니다. 방금 들어갔고 해결 방법을 모르는 문제가 발생했습니다. 나는 새로운 높은 점수를 얻는 게임을 보았고 이전의 높은 점수에 새로운 높은 점수를 더하고 번호를 위아래로 움직이게합니다. 매우 시원하고 시각적으로 눈에 띄게 보입니다.숫자가있는 UILabel에 애니메이션 적용

아무에게도 어떻게 설명 할 수 있습니까? 이 질문을 쉽게 해결할 수 있으면 사과드립니다. 아직 배우거나 완벽한 애니메이션을 시도하고 있다고 말했듯이 말입니다. 내가 여기 틀렸다면 사전에

덕분에

답변

9

post sergio suggested you look at에서 코드를 가져 왔지만, Anshu의 언급에 따르면, 페이드 인/페이드 아웃 애니메이션보다는 오히려 움직이는 위아래 애니메이션을 원한다는 점에 주목했습니다. 그래서 원하는대로 코드를 변경했습니다. 여기 있습니다 :

// Add transition (must be called after myLabel has been displayed) 
CATransition *animation = [CATransition animation]; 
animation.duration = 1.0; //You can change this to any other duration 
animation.type = kCATransitionMoveIn;  //I would assume this is what you want because you want to "animate up or down" 
animation.subtype = kCATransitionFromTop; //You can change this to kCATransitionFromBottom, kCATransitionFromLeft, or kCATransitionFromRight 
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
[myLabel.layer addAnimation:animation forKey:@"changeTextTransition"]; 

// Change the text 
myLabel.text = newText; 

희망이 있습니다.

+0

정말 고마워요! 동의합니다 –

+0

@AlexG - 문제 없습니다. 매개 변수를 사용하여 조금 놀아도 좋지만 잘 작동합니다. – pasawaya

2

사람들은 저를 수정할 수 있습니다,하지만 난 당신이 수동으로이 애니메이션을 코딩 할 필요가 확신 해요. 열심히 보시면 온라인 어딘가에서 오픈 소스 버전을 찾을 수있을 것입니다.

UILabel의 이미지를 찍고 sizeWithFont:을 사용하여 각 문자의 너비를 결정한 다음 이미지를 각 자릿수를 기준으로 섹션으로자를 수 있습니다. 또는 각 숫자에 대해 UILabel을 여러 개 사용할 수 있습니다.

숫자 이미지 배열을 얻었 으면 전환 도중에 어떤 자릿수가 변경되는지, 그리고 증가 또는 감소하는지 여부를 계산 한 다음에서 다음 자릿수로 전환해야합니다. 위쪽/아래쪽 (코어 애님 문서를 둘러보기 위해 트랜지션이 내장되어 있다고 생각합니다.)

증가/감소 정도를 결정하고이를 사용하여 애니메이션 소요 시간을 계산할 수 있습니다. 이렇게하면 5에서 900으로 이동하는 경우 마지막 자릿수는 매우 빠르게 애니메이션을 적용해야하고 두 번째 자막은 1/10로 빠르게 애니메이션화되고 세 번째 자막은 1/100 등이됩니다.

+0

설명해 주셔서 감사합니다. Qegal은 그 이유 때문에 예를 제공 했으므로 받아 들였습니다. +1 좋은 대답을하지만 –

관련 문제