Domanda

Ho una sottoclasse di UIViewController che gestisce una UIView. Il viewcontroller è presentato in modo modale (scorre verso l'alto dalla parte inferiore dello schermo). Nella parte superiore della vista, ho aggiunto una barra di navigazione. Nota che questa barra non è gestita da un controller di navigazione.

Voglio far restringere la barra di navigazione in altezza quando la vista ruota in orizzontale (simile a come si comporta quando viene gestita da un UINavigationController). Tuttavia, non riesco a impostare la sua maschera di ridimensionamento automatico su altezza flessibile in IB, e farlo nel codice fa scomparire completamente la barra di navigazione.

C'è un modo per farlo? Come viene eseguito da UINavigationController?

P.S. Preferirei non dover ricorrere a una trasformazione di ridimensionamento, poiché ciò rovinerebbe il testo nel titolo.

EDIT: l'ho risolto con un piccolo aiuto, leggi la risposta postata di seguito.

È stato utile?

Soluzione 2

Ho trovato la soluzione, e col senno di poi mi sento piuttosto stupido. Ho dovuto solo includere un margine inferiore flessibile nella maschera di ridimensionamento automatico della barra di navigazione. Il merito è dovuto all'utente RayNewbie in questo thread, che mi ha indicato la soluzione:

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

Altri suggerimenti

Invece di impostare la maschera di ridimensionamento automatico, perché non controllare semplicemente l'orientamento corrente in viewWillAppear, così come in didRotateFromInterfaceOrientation e impostare il frame appropriato?

- (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 ...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top