É possível usar o iOS 7 UIViewController transições (interativo especificamente) com vista da criança controladores?

StackOverflow https://stackoverflow.com//questions/22003967

Pergunta

Há muitos tutoriais flutuando sobre como utilizar o novo iOS 7 UIViewController transições API e o grande interativo de transição API.No entanto, nenhum destes parece fazer referência a adição e remoção de vista da criança controladores de forma interativa, apesar de na WWDC 2013 vídeo Personalizado UIViewController Transições que o funcionário da Apple mostra o que eu imagino ser um filho do controlador de visualização apresentados com um costume de transição:

enter image description here

(Eu estou supondo que esta como um controlador de visualização é exibida na parte superior de outra, aparentemente.Eu não acho que você pode fazer a transição para um novo UIViewController, mantendo a outros visível por trás dele...)

É possível fazer uma coisa dessas com vista da criança controladores?

Na minha situação, eu estou adicionando um UIPageViewController galeria de imagens como uma criança view controller, mas você ainda pode ver o controlador de visualização foi adicionado se a imagem a UIPageViewController não ocupa a tela inteira.Eu também adicionada a possibilidade de apresentação de uma imagem da tela (semelhante ao iOS 7 multi-tasking perto) e eu adoraria ser uma exibição interativa controlador de pop.

Existem tutoriais para tal coisa?É mesmo possível?Isso seria melhor do feito com presentViewController de alguma forma, que me permitiria ver o view controller abaixo?

Foi útil?

Solução

Se você assistir o vídeo novamente, você vai notar em 12:15 ele referencia o suporte estilo de apresentação UIModalPresentationCustom.Este estilo de apresentação significa que o 'de' Vista do Controlador de modo de Exibição não é removido da vista de hierarquia, permitindo que você crie seus próprios formulários.Então, no seu caso, você deve fazer o seguinte:

//insert code where you want the presentation to begin

UIPageViewController *pageVC = [[UIPageViewController alloc] init];
pageVC.modalPresentationStyle = UIModalPresentationCustom;
id<UIViewControllerTransitioningDelegate> transitionDelegate = [self transitionDelegate];
[self presentViewController:pageVC animated:YES completion:nil];

sua animação de transição objeto seria responsável por garantir que sua página de exibição de controladores quadro não está em tela cheia.Só cuidado com as implicações da gestão de dois complexos de exibição de controladores na tela ao mesmo tempo.Eu recomendaria, ao invés de tirar um instantâneo de sua primeira exibição controladores de modo de exibição e, em seguida, tornar o plano de fundo do segundo modo de exibição controladores de modo de exibição.A página view controller, então, seria um filho do segundo controlador.

Você pode encontrar este tutorial útil - http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/

Melhor ainda, alguém fez uma replicação de Sessão 218 da amostra no github. https://github.com/soleares/SOLPresentingFun

Codificação Feliz

Outras dicas

Parece que você quer fazer um personalizado de transição com uma UIViewController recipiente.Esta é uma mais complicada proposição do que o normal, transições porque você precisa fornecer o objeto que implementa UIViewControllerContextTransitioning a si mesmo.

Apesar de todos os métodos necessários, este protocolo não é tão difícil de implementar.A maioria dos métodos são auto-evidentes.Já que você quer uma interativo de transição que você vai enfrentar alguns obstáculos, eu não enfrentou ainda.Aqui estão algumas dicas que eu descobri recentemente durante a implementação do presente protocolo:

  1. Não tenha medo de definir suas próprias chaves para: viewControllerForKey:.Eu achei que eu precisava de uma referência para o pai do controlador de visualização na minha animador objeto.A solução mais pura era a definição de outra tecla para passar para este método.Isso funciona muito bem se o objeto que implementa este protocolo também é o pai do controlador de visualização.

  2. Vend o animador chamando animationControllerForPresentedController:presentingController:sourceController em vez de instanciar o animador si mesmo.Mais uma vez, isso é sentido como um aspirador de abordagem, pois opera dentro da intenção dos protocolos.Este é o método que seria chamado como parte de presentViewController:animated:completion:.

  3. Utilização UIModalPresentationNone.Desde que você está falando especificamente sobre de vista da criança controladores você não está realmente fazendo um modal de apresentação.

  4. Adicionar o controlador de visualização de contenção de chamadas, por exemplo, addChildViewController: em seu animador.Isto é onde você vai adicionar o seu novo controlador de visualização para o modo de exibição controlador de hierarquia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top