사용자 정의 애니메이션을 사용하여 UINavigationController의보기 스택에서보기 컨트롤러간에 전환하는 앱을 작성하려고합니다.UIView transitionWithView 펑키 결과
지금 당장은 메카닉을 올바르게 작동시키기 위해 동일한 뷰의 여러 래퍼를 추가하고 있습니다.
내 시각 목표는 다음과 같습니다.
1. 새 "FirstVC"를 만듭니다.
2. [FirstVC보기]의 알파 값을 0으로 설정하십시오.
3. [FirstVC보기]의 변환 값을 양방향으로 25 % (수평 & 세로)로 설정하십시오.
애니메이션 블록에서 수행하고자하는 작업은 다음과 같습니다.
1. [OutgoingVC view]의 변환 값을 양방향으로 500 %로 설정합니다 (5 배 폭파).
2. [OutgoingVC view]의 알파 값을 0으로 설정합니다 (아무 것도 변하지 않음).
3. [FirstVC보기]의 변환 값을 1로 설정하십시오 (원래 크기로 되돌림). 4. [FirstVC보기]의 알파 값을 1로 설정하십시오 (전체 색상으로 희미 해짐).
이 애니메이션의 실제 효과는 "다음 페이지/하단 페이지"가 (전체 화면에만 표시) 사라지고 페이드 인되는 동안 "톱 페이지"가 날아가서 사라져야한다는 것입니다. 사용자가 떨어지는 생각입니다 바닥이나 무언가를 통해서. "더 깊이 간다."
내 애니메이션을 10.0 초 간격으로 늦추어서 무슨 일이 일어나는지 더 잘 처리 할 수있게되었습니다.
"OutgoingVC"(즉, 평면도)에서 일어나는 애니메이션이 정확한 것처럼 보입니다. 그러나 아래쪽보기는 화면 크기와 알파 = 1.0의 100 %로 잘 들어간 것처럼 보이지만 계속해서 4x/5x로 날아가고 0의 알파로 사라집니다. 화면이 완전히 검게되면 새로운 UIViewController (FirstVC)가 화면에 올바르게 표시됩니다.
내 코드가 내가 원하는 방식으로 작동하지 않는 이유를 알 수 있습니까?
감사합니다.
어리석은 me! 여기에 코드입니다 :
- (IBAction)AddNewScreenPressed:(id)sender
{
FirstVC *newViewController = [[FirstVC alloc] init];
UIView *currentView = [self view];
UIView *newView = [newViewController view];
[newView setTransform:CGAffineTransformMakeScale(0.25, 0.25)];
[newView setAlpha:0];
[UIView transitionWithView:[self view]
duration:10.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
[[self view] addSubview:newView];
[currentView setAlpha:0];
[currentView setTransform:CGAffineTransformMakeScale(5.0, 5.0)];
[newView setAlpha:1.0];
[newView setTransform:CGAffineTransformMakeScale(1, 1)];
}
completion:^(BOOL finished){
[[self navigationController] pushViewController:newViewController animated:NO];
}
];
}
최종 해결책은 iOS 5 Beta에서 단편을 사용하는 것이 었습니다. 나는 지금 더 많은 것을 논평 할 수 있는지 확신 할 수 없다. 그러나 당신의 편집은 내가 구현 한 것에 이론 상으로는 가깝다. 따라서 귀하의 답변이 수락됩니다! – mbm29414