탐색 컨트롤러를 사용하여 확대하는 것처럼 보이는 사용자 지정 segue를 사용합니다. segue가 끝나고 pushViewController: animated:
메서드가 호출되면 글리치 효과가 나타납니다. 탐색 표시 줄이 즉시 나타나고 scrollView의 내용을 높이 (88 픽셀)의 값과 함께 아래에 배치합니다. 아래의 애니메이션은 효과를 명확하게 나타냅니다.
http://s7.postimg.org/7in5s980r/image.gif
볼 수 있듯이, scrollView의 내용은 segue의 마지막 단계에서 매우 빠르게 움직입니다.사용자 지정 segue 및 탐색 컨트롤러 애니메이션 결함
- (void)perform {
UIViewController *sourceViewController = self.sourceViewController;
UIViewController *destinationViewController = self.destinationViewController;
// Add the destination view as a subview, temporarily
[sourceViewController.view addSubview:destinationViewController.view];
// Transformation start scale
destinationViewController.view.transform = CGAffineTransformMakeScale(0.05, 0.05);
// Store original centre point of the destination view
CGPoint originalCenter = destinationViewController.view.center;
// Set center to start point of the button
destinationViewController.view.center = self.originatingPoint;
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
destinationViewController.view.transform = CGAffineTransformMakeScale(1.0, 1.0);
destinationViewController.view.center = originalCenter;
}
completion:^(BOOL finished){
[destinationViewController.view removeFromSuperview];
[sourceViewController.navigationController pushViewController:destinationViewController animated:NO];
}];
}
, 문제는 (이 푸시 SEGUE 인 경우)의 ViewController 네비게이션 바의 높이 (컨텐츠 아래로 조금을두고 일반적이다 : 여기
는 SEGUE 코드입니다) 그리고 segue 동안 이것을한다. 그러나 이제는 segue를 사용자 지정으로 처리하고 Navigation Bar를 무시하지만 NavBar에서 내용의 일부가 겹쳐져 있음을 보여줍니다. Navigation Controller에서 새 VC를 제공하면 NavBar의 높이가 계산되고 즉시 콘텐츠가 다운됩니다. 내 생각 엔, 콘텐츠 뷰어에서 segue 동안 콘텐츠 크기 및 시작점과 같은 scrollView의 속성을 설정하는 방법이있을 수 있지만이를 구현하는 방법을 모를 수 있습니다.
거의 틀림없이 그 이유는 분명합니다. NavBar에 패딩을 적용하지 않고 애니메이션에서 VC를 표시하고 나중에이 패딩을 추가하기 때문입니다. 그러나 나는이 아이디어를 해결하는 방법에 대해 어떤 아이디어를 요구했다. –
내가 생각할 수있는 한 가지는 탐색보기 스택에 새로운 빈보기를 푸시 할 수 있다는 것입니다. 그런 다음 새 뷰는 destinationView를 하위 뷰로 추가하고 애니메이션을 애니메이션으로 만들 수 있습니다. – veovo
스토리 보드에 투명 (알파 = 0) NavBar를 추가하여 iOS 7 이상에서 이미이 문제를 해결했습니다. 문제의 솔루션 자체를 추가합니다. 투명한 NavBar를 추가하면 도움이되지 않으므로 iOS 6에 대한 질문은 아직 열려 있습니다. –