2013-02-06 4 views
2

이 질문은 많이 묻는 것 같지만 UIKit에서와 같은 방법으로 사용자 정의 화면 전환을 할 수 있는지 여부에 대한 확실한 답을 찾지 못했습니다.사용자 정의 UIViewController 전환 애니메이션을 만드는 방법은 무엇입니까?

저는 현재 뷰와 앞으로 나타날 뷰의 스크린 샷을 찍은 다음 애니메이션 아래에있는 뷰 컨트롤러를 변경하는 동안 그 뷰를 애니메이션 할 수 있다는 것을 알고 있습니다. 그러나 스크린 샷 때문에 기본적으로 2 개의 전체 화면을 추가 할 수 있으므로 상당히 많은 메모리가 필요합니다.

사용자 정의 애니메이션으로보기 컨트롤러를보다 세련되게 표현하는 방법을 찾고 있습니다. 또는 위의 방법을 수행하는 메모리 효율적인 방법이 있습니까?

+0

맞춤 애니메이션이란 무엇을 의미합니까? 뭐라고하지? 티? – occulus

+0

'UIModalTransitionStyle'에있는 것과 같은 의미입니다. 내장 된 애니메이션은 4 가지 밖에 없으므로 해당 전환 애니메이션을 다른 것으로 쉽게 사용자 정의 할 수있는 쉬운 방법이없는 것 같습니다. –

답변

5

전환 할 방법, 컨트롤러가 컨테이너 컨트롤러에 내장되어 있는지 여부 등에 따라 여러 가지 방법이 있습니다. 가장 간단한 경우, 단일 컨트롤러가있는 곳으로 전환하려는 경우 다른 컨트롤러, 당신은 다음 단계를 수행 할 수 있습니다

  1. 새로운 컨트롤러의 인스턴스를
  2. 윈도우의 서브 뷰으로 B의보기를 추가 (B를 호출 할 수 있으며 원래 A) (자기로부터받은 .view.window)
  3. B의 프레임을 화면에서 벗어나 원하는 방향으로 설정하거나 알파를 설정합니다 0으로 설정하거나, 원하는 전환 효과에 따라 크기가 0으로 설정하십시오. , 완료 블록에
  4. (완료 블록) A의 뷰를 제거
1

기본적으로 B에게 윈도우의 루트 뷰 컨트롤러를 만들 : 애니메이션 : 완료

  • 이제까지 당신이 animateWithDuration로 원하는을 전환 할 당신은 자동으로 시스템을 유지하고 해제하는 중이며, rdelmar의 답변 아래에 어떤 일이 일어나고 있는지를 설명합니다. 뷰 컨트롤러를 전환하는 것은 시스템이 컨트롤러를 메모리에 유지하면서 뷰를 애니메이션으로 만드는 것입니다.

    그러나 더 많은 질문에 답하기 위해 UIView 애니메이션은 이미지를 복제하고 캐시합니다. (시스템 캐시가 메모리를 언로드하지 않으므로 UIImage imageNamed를 피하십시오.)

    효율성을 원한다면 타이머를 사용하여 코드를 직접 코딩하고 생각할 수있는 모든 그래픽 트릭을 사용하십시오.

    마지막 버전과 같은 방식으로 작동하도록 iOS를 신뢰하지 마십시오. 내가 말한 모든 내용은 iOS 6이 주석을 달았던 것과 같은 방식으로 잘못 될 수 있으며, 설명서에는 IOS 3 애니메이션이 쓸모 없게 될 것이라고 명시되어 있습니다 (지금은 대신 대체됩니까?) gah, 효율성을 신중히 말하면 방금 시도하면 먼 미래에 깨지거나 업데이트 될 수 있습니다.

  • 관련 문제