2011-10-03 3 views
0

특정 행에 착륙하기 전에 여러 번 주위를 돌고있는 것처럼 보이게하려고합니다. for 루프와 while 루프를 사용해 보았습니다. 난 연속으로 여러 메소드를 호출 시도,하지만 난 결국이 같은 선택된 행에 착륙하기 전에 여러 번 다시로드를 말하고 있지만마다, 피커는 한 번만에도 다시 나타납니다 : 내가 할피커가 여러 번 회전하는 것처럼 보이게하려면 어떻게해야합니까?

int newValue = random() % [self.inputNames count]; 
[payPicker selectRow:newValue inComponent:0 animated:YES]; 
[payPicker reloadComponent:0]; 
NSDate *future = [NSDate dateWithTimeIntervalSinceNow: 2.0 ]; 
[NSThread sleepUntilDate:future]; 

newValue = random() % [self.inputNames count]; 
[payPicker selectRow:newValue inComponent:0 animated:YES]; 
[payPicker reloadComponent:0]; 

[NSThread sleepUntilDate:future]; 

을 위의 경우 약 3-4 번이며 피커는 한 번만 다시로드 된 것으로 보일 때마다 마지막으로 선택한 행으로 이동합니다. 내가해야 할 특별한 것이 있습니까? 아니면 피커가 주위를 돌아 다니며 돌아 다니는 것처럼 보이게 할 수 있습니까? 내가 행 선택에 따라 랜덤하게 점프하여 하나에 착륙시킬 수 있다면, 그걸로도 괜찮을 것입니다. 감사합니다.

답변

1

는 UI 스레드 잠을하지 마십시오. 모든 수면 후에이 방법을 종료 할 때까지 애니메이션이 시작되지 않습니다. 따라서 피커에 대한 첫 번째 요청이있는 메서드에서 돌아와 애니메이션을 만듭니다. 이전 피커 애니메이션이 끝난 후 타이머 콜백에서 후속 피커 애니메이션 요청을 수행합니다. 린스하고 필요한만큼 반복합니다.

다른 앱이하는 방식은 실제 선택기를 전혀 사용하지 않고 피커 컨트롤을 피커 회전처럼 보이는 애니메이션 이미지 시퀀스로 오버레이하는 것입니다. 그런 다음 가짜 애니메이션을 제거하여 동일하지만 보이지만 실제 피커를 아래에 표시합니다. 자신의 애니메이션 만화의 장점은 가짜 피커가 실제 피커가 할 수없는 방식으로 회전 할 수 있다는 것입니다.

+0

완벽한! 고맙습니다! 애니메이션 이미지 시퀀스를 사용하는 것도 멋진 아이디어라고 생각합니다. 아마 그걸로 전환 하겠지만 당신의 제안은 효과가있었습니다. – MeisterPlans

0

아마도 실제 행을 선택하기 전에 임의의 행을 선택할 수 있습니다. 예를 들어, 행 0을 선택하려면 다음 순서 (9, 2, 15, 0)로 행을 선택하십시오. 이동하려는 행에 이미있는 경우 피커 뷰가 회전하지 않는다고 생각합니다. 또한 pickerView:didSelectRow:inComponent: 메소드가 히트 한 후 매번 행을 선택해야합니다.

HTH,

하기 Akshay

+0

나는 이것을 다음과 같이 생각했다 :'int newValue = random() % [self.inputNames count]; [payPicker selectRow : newValue inComponent : 0 animated : YES]; ' – MeisterPlans

+0

동의합니다. 내 대답의 마지막 줄에 내가 쓴 것을 시도 했습니까? – Akshay

+0

안녕하세요 Akshay, 아니요. 시도하지는 않았지만 답변은 hotpaw2에서 제공했습니다. 어쨌든 애니메이션 이미지 시퀀스를 사용하는 것이 가장 좋습니다. 도와 줘서 고마워. 내가 얻을 수있는 모든 것에 감사드립니다. :) – MeisterPlans

관련 문제