Pergunta

Eu tenho uma subclasse de UIViewController que lida com um UIView. O viewcontroller é apresentado de forma modal (que desliza para cima a partir da parte inferior da tela). No topo da vista, eu adicionei uma barra de navegação. Note-se que este bar não é tratado por um controlador de navegação.

Eu quero começar a barra de navegação para encolher de altura quando a vista gira para paisagem (semelhante à forma como ele se comporta quando ele é tratado por um UINavigationController). No entanto, não pode definir sua máscara de redimensionamento automático de altura flexível na IB, e fazê-lo em código faz com que a barra de navegação para desaparecer completamente.

Existe uma maneira de fazer isso? Como é feito pela UINavigationController?

P.S. Eu preferiria não ter que recorrer a uma escala transformar, uma vez que este iria atrapalhar o texto no título.

EDIT: Eu resolvi-lo com um pouco de ajuda, leia a resposta postada abaixo

.
Foi útil?

Solução 2

Eu encontrei a solução, e em retrospectiva eu ??me sinto um pouco estúpido. Eu só tinha que incluem margem inferior flexível na máscara autoresize da barra de navegação. Crédito é devido ao usuário RayNewbie neste segmento, o que me apontou para a solução:

http://discussions.apple.com/thread.jspa?messageID=8295525

Outras dicas

Ao invés de conjunto é o redimensionamento automático de máscara, por que você não apenas verificar a orientação atual em viewWillAppear, bem como em didRotateFromInterfaceOrientation, e definir o quadro apropriado?

- (void) updateNavBar {
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    if ((UIInterfaceOrientationLandscapeLeft == orientation) ||
        (UIInterfaceOrientationLandscapeRight == orientation)) {
        myNavBar.frame = CGRectMake(0, 0, 480, 34);
    } else {
        myNavBar.frame = CGRectMake(0, 0, 320, 44);
    }
}
- (void) viewWillAppear {
    [self updateNavBar];
    // ... SNIP ...
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    [self updateNavBar];
    // ... SNIP ...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top