2014-09-16 3 views
7

UIViewController에서 새 UIViewController를 푸시 할 때 이전 UIViewController가 슬라이드 아웃되지만 새로운 불투명 한 배경이있는 경우 UIViewController에서 새 UI 전경 UIViewController에 표시됩니다. .iOS8 UINavigationController 투명한 UIView 푸시/팝 문제

푸시가 완료되면 이전 컨트롤러가 사라지고 전체 애니메이션이 거칠게 보입니다.

iOS8 이전 버전에서는 투명한 경우에도 뒤에서 볼 수 없었습니다. 마치 미끄러 진 마스크가있는 것처럼. 누구든지이 문제를 해결할 수있는 좋은 방법을 알고 있으므로 커스텀 애니메이션으로 전체 푸시 애니메이션을 다시 구현하지 않고 이전 동작과 유사합니다.

iOS7에 :

presentingVC.modalPresentationStyle = UIModalPresentationCurrentContext; 

iOS8의 :

modalVC.modalPresentationStyle = UIModalPresentationOverCurrentContext; 
modalVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 

(modalVC 당신이 제시하고자하는 뷰 인)

enter image description here

+1

혹시 좋은 해결책이 있습니까? – Lizza

답변

2

, 그것은 UINavigationController가의 표준 동작입니다 : 여기

[presentingVC presentViewController:modalVC animated:YES completion:nil]; 

은 원래 소스입니다.

푸시 전환 중에 UINavigationController가 첫 번째 컨트롤러를 초보다 느리게 슬라이드합니다. 두 번째 contoroller의 애니메이션이 끝나면 UINavigationController가 첫 번째 뷰 컨트롤러를 제거합니다. 두 번째보기 컨트롤러에 투명 배경이있는 경우 전환 중에 첫 번째 컨트롤러가 표시됩니다.

  1. 두 번째 ViewContorller에 동일한 배경 (투명하지)를 추가

    당신은 당신의 목표에 도달하는 3 가지 방법이있다.

  2. 여기에 설명 된 것처럼 사용자 지정 전환 만들기 : Navigation controller custom transition animation
  3. UIView 애니메이션을 사용하여 전환을 만듭니다.