2

사용자가 도구 모음에서 항목을 클릭 할 때 도구보기 컨트롤러를 표시하는 그리기 응용 프로그램을 작성하고 있습니다. 그러나 몇몇 베타 테스터는 도구가 너무 느리게 열리는 것으로보고했습니다. 도구를 표시하는 호출하고 나는 그것을 속도를 높이기 위해이 같은 코드 블록에 포장 해봤 : 애니메이션 : 나는 표준 presentModalViewController를 사용하고presentModalViewController의 애니메이션 속도를 높일 수 있습니까?

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration: 0.1]; 
[self presentModalViewController:settings animated:YES]; 
[UIView commitAnimations]; 

를 불행히도 작동하지 않습니다. 애니메이션으로 말하면 : NO는 더 잘 작동하지만 기본 드로잉 캔버스 뷰는 즉시 제거됩니다 (컨트롤러는 더 이상 보이지 않는다고 생각하기 때문에). 그래서 애니메이션은 흰색 배경 위에 발생합니다.

어떤 조언을 해 주실 분이 있으십니까? 나는 그것을 감사하겠습니다!

답변

1

비슷한 질문이 있습니다. here.

또한이 기술을 사용하여 속도를 변경할 수도 있지만 내 실험에서 제안한 것처럼 빈 배경 위에 속도를 변경할 수 있습니다.

+0

팁 zpasternack에 감사드립니다 - 나는 그것을 살펴볼 것입니다! –

+0

처럼 보이는 것만 큼 좋을 것 같습니다. 대답 허용 :-) –

+0

주 화면의 배경색을 변경하여 흰색이 아닌 (응용 프로그램의 색상과 어울리는 경우가 많을 수 있습니다.) 아주 좋았습니다. – TimM

8

수정 됨 : iOS 5 이상용 컨트롤러 봉쇄와 함께 다른 옵션이 추가되었습니다.

다른 해결책은 레이어의 시간 간격을 설정하는 것입니다.

이것은 CALayer의 speed 속성을 통해 수행됩니다. 애니메이션을 느리게하기 위해, 하나는 사용할 수 있습니다

MytransparentVCViewController *vc = [[MytransparentVCViewController alloc] initWithNibName:@"MytransparentVCViewController" bundle:nil]; 
// Makes all animations 10 times slower 
// To speed it up, set it to multiples of 1: 2 is 2 times faster, 3 is 3 times faster etc 
vc.view.layer.speed = 0.1; 
[self presentModalViewController:vc animated:YES]; 

당신의 목표는 당신이 제시하려고 모달 뷰 컨트롤러의 애니메이션 속도를 변경하는 경우 링크 된 게시물에 제안 된 솔루션을 위해 (작동하지 않습니다 UIModalTransitionStyleCoverVertical을 사용하는 경우).

레이어의 속도는 절대 값이 아니라 해당 레이어의 부모 시간 공간의 함수입니다 (단, 레이어가 물론 레이어 계층 구조의 루트에 있지 않은 경우). 예를 들어 레이어의 속도를 2로 설정하면 해당 레이어의 부모 애니메이션과 비교하여 애니메이션이 두 배 빠르게 실행됩니다.

또 다른 옵션은 뷰 컨트롤러 봉쇄를 사용하는 것입니다. (iOS 5 이상에만 해당)

http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW81.

당신은 UIViewController의 transitionFromViewController : toViewController : duration : options : animations : completion :으로 애니메이션을 완전히 제어 할 수 있습니다.

+0

감사합니다. 이것은 나를 위해 UINavigationController 사용하여 일했다. 전환 속도 만 영향을 받도록 대리자 메서드 (willShow/didShow)에서 speed 속성을 설정/재설정합니다. – cidered

+0

이 답변은 선택한 답변보다 더 적절하다고 생각합니다. (+1) – Beppe

관련 문제