내 UI의 버튼을 분리하기 위해 아래 두 가지 방법을 연결했지만 "VERSION 1"버튼을 누른 후에 메소드 내의 애니메이션 지속 시간이 끝날 때까지 버튼을 다시 누를 수 없다는 것을 알았습니다. 제 이해는 애니메이션이 자체 응용 프로그램을 차단하지 않도록 자체 스레드를 사용한다는 것입니다.animateWithDuration : animations : 메인 스레드 차단?
// VERSION 1
-(IBAction)fadeUsingBlock {
NSLog(@"V1: Clicked ...");
[myLabel setAlpha:1.0];
[UIView animateWithDuration:1.5 animations:^{
[myLabel setAlpha:0.0];
}];
}
이전 스타일 버전 (아래)에서는 애니메이션 타이머가 끝나기 전에 버튼을 다시 누르면 단순히 타이머를 다시 시작합니다. 이 두 가지가 똑같이 작동해야합니까? 뭔가 빠졌거나 3.2와 4 사이에서 작동이 변경 되었습니까?
// VERSION 2
-(IBAction)fadeUsingOld {
NSLog(@"V2: Clicked ...");
[myLabel setAlpha:1.0];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[myLabel setAlpha:0.0];
[UIView commitAnimations];
}
건배 게리
아, 나는이 문서에서 해당 옵션을 놓쳤다, 나는 그것을 볼 것이다. 많은 감사, 많이 감사하겠습니다. – fuzzygoat
감사합니다. 젠장, 이건 나를 괴롭혔다. 실제로 애니메이션이 적용되는 뷰와의 상호 작용을 차단한다고 말하기 때문에 기본적으로 켜지지 않지만 실제로는 전체 UI를 차단합니다. – runmad
곧 출시 예정인 iOS 5.0에서 수정 되었다면 좋지 않겠습니까? –