UIView 클래스 메서드를 사용하는 UIView 애니메이션이 끝날 때까지 프로그램을 "일시 중지"상태로 두는 것처럼 보입니다.UIView 애니메이션 지연
예를 들어 3 초간 지속되는 애니메이션 시작 방법과 애니메이션이 적용되는 동안 프로그램의 다른 부분이 계속 실행 중이고 터치 이벤트를 수락하는 등의 방법이 있습니까?
UIView 클래스 메서드를 사용하는 UIView 애니메이션이 끝날 때까지 프로그램을 "일시 중지"상태로 두는 것처럼 보입니다.UIView 애니메이션 지연
예를 들어 3 초간 지속되는 애니메이션 시작 방법과 애니메이션이 적용되는 동안 프로그램의 다른 부분이 계속 실행 중이고 터치 이벤트를 수락하는 등의 방법이 있습니까?
예, UIKit은 기본적으로 애니메이션 중에 상호 작용을 차단합니다. 무시하려면, UIViewAnimationOptionAllowUserInteraction
을 설정
[UIView animateWithDuration:0.3 delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^
{
// ...
} completion:NULL];
감사합니다. 그게 그랬어. – johnbakers
UIKit은 스레드로부터 안전하지 않으므로 이러한 애니메이션은 모두 백그라운드 스레드가 아닌 주 스레드에서 발생해야합니다. 애플의 문서에서 인용 :
노는 응용 프로그램의 사용자 인터페이스 에 는 주 스레드에서 발생해야
고려 스레딩. 따라서 의 메서드를 호출하여 에서 실행중인 코드의 UIView 클래스를 응용 프로그램의 주 스레드라고 항상 호출해야합니다. 보기를 생성 할 때 이것이 단지 일 필요가없는 유일한 시간은 개체 자체입니다. 다른 모든 조작은 기본 스레드에서 발생해야합니다.
(기본 UI 스레드 이외의) 다른 스레드에서 실행 될 수있는 그 다른 측면이 있지만, 내가 무엇을 제안하는 코드를 볼 필요가있다. – Tom
애니메이션 도중 스레드 또는 실행 루프가 차단되지 않고 터치 이벤트 만 발생합니다. (그리고 기본적으로) –
아, 좋아. 이것은 아마 내가보고있는 것입니다. 따라서 애니메이션 중에 터치 이벤트를 수신 할 수 없습니까? 하나의 작은 UIView가 몇 초 동안 알파 페이드를하고 있다면, 프로그램은 의도적으로 화면의 다른 곳에서 터치 이벤트를 허용하지 않을 것입니다. – johnbakers