Sto provando a visualizzare un UILabel su un UINavigationController. Il problema è che quando aggiungo UILabel come sottoview di UIWindow non ruoterà automaticamente poiché non è una sottoview di UIViewController (UIViewController gestisce automaticamente l'aggiornamento delle subview durante le rotazioni).Aggiunta di un UINavigationController come sottoview di UIView
Questa è la gerarchia che stavo usando:
- UIWindow
- UILabel
- UINavigationController
Stavo pensando che potrei usare la seguente gerarchia:
- UIWindow
- UIViewController
- UIView
- UILabel
- UINavigationController
- UIView
- UIViewController
In questo modo è possibile visualizzare l'etichetta sopra la barra di UINavigationController mentre viene automaticamente ruotata poiché è una sottoview di UIViewController.
Il problema è che quando provo aggiungendo un UINavigationController come una visualizzazione secondaria di vista:
[myViewController.view addSubview:myNavigationController.view];
apparirà 20 pixel verso il basso. Il che credo sia perché pensa che sia necessario lasciare spazio alla barra di stato. Tuttavia, poiché UINavigationController viene inserito in un UIView che non si sovrappone alla barra di stato, aggiunge in modo non corretto altri 20 pixel. In altre parole, la parte superiore di UINavigationBar si trova sul contrassegno di 40 pixel dello schermo anziché 20 pixel.
C'è un modo semplice per spostare semplicemente UINavigationController e tutti i suoi elementi (ad esempio barra di spostamento, barra degli strumenti, controller di visualizzazione radice) fino a 20 pixel? O per far sapere che non dovrebbe compensare una barra di stato?
In caso contrario, credo che avrei bisogno di utilizzare la mia prima gerarchia di cui sopra e capire come ruotare l'etichetta in modo coerente con la rotazione della barra di navigazione. Dove posso trovare ulteriori informazioni su come farlo?
Nota: con "visualizzazione di un'etichetta nella parte superiore della barra di navigazione", voglio dire che deve sovrapporsi alla barra di navigazione ... non può semplicemente essere avvolto in un elemento del pulsante della barra e inserito come gli elementi della barra di navigazione.
uso nav.view.frame = CGRectMake (0,0, self.view.frame.size.width, auto .view.frame.size.height); \t per fare questo funziona anche su ipad, che non ha il bug +20 ma ha altri problemi con larghezza e altezza, nel complesso questo è un crock totale, molto sciatto di apple – valexa
Ho un'istanza in cui se carico un UINavigationController vista come una sottoview in modalità orizzontale su iPad, ottengo il bug da 20 pixel. Ma solo la prima volta. Posso aggiungere nuovamente il superview in un secondo momento e il problema scomparirà. Molto, molto frustrante. –
Sembra che abbia lo stesso problema. Niente mi sta dicendo che la barra di navigazione ha un offset di 20 pixel in verticale. @ DanielelWood condivido davvero la tua frustrazione. Se spingo e poi pop un altro controller, va tutto bene, ma la prima volta ... provo a giocare. – Vaseltior