6

Nella mia applicazione,Visualizza modifiche al fotogramma su Nascondi/Mostra barra di navigazione?

Ho un controller di navigazione con controller di visualizzazione radice.

Per mostrare/nascondere la barra di navigazione che funziona correttamente.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    BOOL navbarhide=[self.navigationController.navigationBar isHidden]; 
    [self.navigationController setNavigationBarHidden:!navbarhide animated:YES]; 


} 

funziona bene, ma,

Quando barra di navigazione è nascosta quindi visualizzare le modifiche del telaio.

Quando la barra di navigazione non è nascosta, la visualizzazione cambia.

When navigation bar is not hidden ..see the press button and view's origin is below the bar, I dont want like this I want it to stick at navigation bar's origin[at the top of the page]

It is fine view is at its original position when bar is hidden. I want view to be stick at this position and turn bar hide/show without changing the view's frame.

Grazie in anticipo ...

Modifica impostazioni configurate self.view.frame non ha alcun effetto.

risposta

10

Ho lo stesso problema. Nel mio progetto, è perché la vista è vista di scorrimento. Se la tua vista è una vista a scorrimento o una tabella, puoi provare questo:

Aggiungo il codice qui sotto al controller.

self.automaticallyAdjustsScrollViewInsets = NO; 

Spero che possa aiutarti.

0

Credo che questo sia per funzionalità predefinita che non può essere modificata da voi, ma si cambia la posizione del pulsante utilizzando seguente codice

myButton.frame = CGRectMake (X, Y, altezza, larghezza);

dopo aver nascosto la barra di navigazione.

+0

in realtà questo è il codice di prova che voglio per la sua attuazione al mio app ... quindi se è possibile ottenere .. –

+0

Quando si fa clic sul pulsante, modificare i valori di myButton. Modificare i valori e provare questo. Penso che avrai la soluzione. –

+0

Sì, posso spostare il pulsante, ma nella mia app reale ho molti componenti quindi è disordinato spostare i componenti !!! 1 –

0

Penso che questo possa aiutare a

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
BOOL navbarhide=[self.navigationController.navigationBar isHidden]; 
[self.navigationController setNavigationBarHidden:!navbarhide animated:YES]; 
if(navbarhide) 
self.view.frame=CGRectMake(0,0, 320, 480); 
else 
    self.view.frame=CGRectMake(0,44, 320, 480); 
} 
+0

Nessun effetto ... lo stesso comportamento ... –

+0

questo non ha effetto perché la navigazione inizia a nascondersi dopo aver impostato la cornice. e rimuove ciò che hai fatto. – hasan83

0

cambiamento del self.view.frame quando si sta mostrando e nascondendo le barre di navigazione

3

Non è possibile modificare lo schema di self.view. Non uso setNavigationBarHidden: per nascondere la barra di navigazione, ma modificare direttamente il frame di self.navigationController.navigationBar. In questo modo, self.view.frame non cambierà.

CGRect frame = (navBarhidden) ? CGRectMake(0, -24,self.view.bounds.size.width,44) :  CGRectMake(0, 20,self.view.bounds.size.width,44); 
self.navigationController.navigationBar.frame = frame; 
+0

ma questo lascia uno spazio nero nel suo vecchio posto. – hasan83

+0

Ho provato questo ma mi ha dato troppi bug laterali – Jasper

2

Ho riscontrato questo problema durante la visualizzazione di UIView a schermo intero. Il telaio di ridimensionamento ha funzionato per me. (Swift)

nasconde navigationBar:

self.navigationController!.navigationBar.hidden = true 
    self.view.frame.origin.y -= 64 
    self.view.frame.size.height += 64.0 

che mostra ancora una volta navigationBar:

self.navigationController!.navigationBar.hidden = false 
    self.view.frame.origin.y += 64 
    self.view.frame.size.height -= 64.0 
Problemi correlati