Pergunta

estou a usar isto.

Eu coloquei isso onde as imagens são adicionadas:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

Coloquei essas substituições no SlidesHowViewController:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return YES;
}

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {


}

O primeiro é chamado, mas não o segundo.

Não estou usando uma ponta; Ele usa um init personalizado que retorna um auto -visão com as 3 imagens nele.

Estou esquecendo de algo? Qual seria a melhor maneira de modificar esse script para que as fotos da paisagem estejam em largura total quando o iPhone for girado pelo usuário?

EDIT: Apenas tentei adicionar Willanimate ... ao controlador de View Root do meu NavigationController, mas não foi invocado. Talvez o NavigationController seja o problema? Nesse caso, onde eu coloco o Willanimate ...? Como alternativa, como faço para receber e transmitir mensagens enviadas para o visível ViewController?

EDIT 2: A causa do erro no tópico foi que o TabBarController estava faltando uma conexão no IB (que eu tinha certeza de que estava lá). Então agora meu problema é o mesmo que para algumas outras perguntas semelhantes - Willanimate ... é chamado no VC raiz, mas não no VCS empurrado. O código que usei desapareceu na galeria VC em vez de deslizá -lo, ou seja. Ele não é empurrado, mas atualmente adicionado como uma subview à janela - para preencher a tela inteira.

Sugestões de como enviar mensagens para que o controlador da subview definir os quadros seriam apreciados ou soluções alternativas!

Foi útil?

Solução

Esta não é uma resposta para o motivo pelo qual o seu "método Willanimaterotation"-não é acionado, mas uma alternativa para como a galeria de imagens pode se adaptar às rotações.

Em initWithImages Add:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didRotate:)
                                             name:UIDeviceOrientationDidChangeNotification object:nil];

Adicione este método para receber a notificação. No Didrotate, você pode lidar com o redimensionamento de um reposicionamento das imagens.

- (void) didRotate:(NSNotification *)notification
{   
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        NSLog(@"Landscape Left!");
    }
}

Não se esqueça de não registrar a notificação no Dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];

Posso também sugerir que você use um UISCROLLVIEL em vez de lidar com rolagem e gesticula -se?

Outras dicas

O SlidesHowViewController é empurrado diretamente para a pilha do controlador de navegação ou faz parte de alguma outra visão? Os métodos de delegados uiview ficam meio confusos ao trabalhar com subviews nas visualizações na pilha do controlador de navegação.

Se o SlidesHowViewController for apenas uma subjusta de outra visão que foi empurrada para a pilha do controlador de navegação, eu tentaria ouvir esse método no controlador de exibição que está realmente na pilha do controlador de navegação e, em seguida, chamando o método apropriado no SlidesChewViewController a partir daí .

Eu tive um problema semelhante em obter o ViewWillappear e o método semelhante chamado em um controlador de navegação.
Eu resolvi chamando -os manualmente quando o método raiz é chamado.
Não sei se é o mesmo problema com a rotação, mas você pode tentar colocar seu controlador de visualização raiz

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.navigatioController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

Acho que essa pergunta foi um pouco complicada de responder, já que era sobre minha configuração específica de aplicativos não rudimentares. Desculpe por deixar o tempo de recompensa acabar, era basicamente tarde demais no mesmo dia em que perguntei;)

Eu pensei em postar isso 'não enterrado em comentários' para quem obtém os mesmos sintomas.

O primeiro foi que notei um iboutlet que tenho certeza de que conectei em um ponto não estava mais conectado (objeto Controlador da barra -> TabBarController). Desde que eu estava acumulando meu cérebro e mudei as coisas para fazer isso funcionar, isso provavelmente era devido a eu tentar algo e depois restaurar um backup.

A segunda parte da solução foi addSubview, a visualização da galeria para a visualização do TabBarController, em vez da visualização navegada. Em seguida, os métodos de Willauto do controlador de visão raiz ... e os métodos Willauto foram invocados.

(Para esconder a barra de guias e a barra de navegação enquanto gira, tive que definir o .Alpha para 0 enquanto a galeria é exibida, caso contrário, a visualização navegada foi parcialmente escondida sob a barra de navegação ao retornar a ela. Não encontrei como se esconder a barra de status enquanto mostra a galeria.)

Depois disso, houve um pedido para ter a galeria em uma visualização detalhada navegada para outra guia, e eu recebi o erro complicado que somente enquanto a outra visualização detalhada (funcionando) foi mostrada na outra guia funcionaria com o novo trabalho com o novo galeria. Voltará à solução para isso, o tempo de Quittin.

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