저는 CoreGraphics와 drawRect를 사용하여 기어 휠을 그립니다. 나는 단계를 통해 전진 기어에 단추를 사용 :forcing setNeedsDisplay
- (IBAction를가) advanceButtonPressed (ID) 보낸 사람을 {
stage=stage+1;
if (stage==4) stage=0;
[self setNeedsDisplay];
}
기어를 그리기위한 루틴의 drawRect이며, gear teeth는 drawRect로 전달되는 stage의 값에 따라 새로운 위치에 그려집니다. 단추를 누를 때마다 하나씩 4 단계로 기어가 새로운 위치 (원 주위의 한 세그먼트)로 바뀝니다.
buttonPressed 루틴을 루프의 4 단계로 변경하여 프레스 만하면됩니다 버튼을 한 번,하지만이 작동하지 않습니다
- (IBAction를)의 buttonPressed (ID) 보낸 사람을 {
for (stage=0;stage<4;stage++){
NSLog(@"%i",stage);
[self setNeedsDisplay];
}
은}
내 NSLog는 그 단계가 바로 그 네 개의 값을 통과 보여줍니다 그것은 이전의 일상에서와 마찬가지입니다. 그러나 setNeedsDisplay는 단 한 번만 실행되므로 (drawRect의 NSLog 추적처럼) 기어가 최종 위치에 표시되지만 중간 단계에는 표시되지 않습니다. setNeedsDisplay는 버튼 루틴이 루프 안에 있음에도 불구하고 완료 될 때만 실행됩니다.
강제로 실행할 수있는 방법이 있습니까?
화면 새로 고침 빈도는 중요하지 않습니다. 이 메소드가 반환 될 때까지 실제로 표시되지 않는 이유는 그것이 코코아 및 코코아 터치에서 드로잉이 작동하는 방식이기 때문입니다. 루프에 걸리는 시간은 중요하지 않습니다. 1 분이 걸릴지라도 코드가 실행 루프로 제어를 반환 할 때까지는 그리기가 수행되지 않습니다. http://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40009503-CH2-SW10 –
타이머가 잘 작동했습니다. 제안에 감사드립니다.-Rob –