Il riquadro di avviso per "Barra di navigazione" sarà diverso in fase di esecuzione in Xcode 8 Swift 3


143

Prima di eseguire l'aggiornamento a Xcode 8non ho visto questo errore in questo caso. Ho diversi controller di navigazione. Per tutti loro vedo un errore Frame for "Navigation bar" will be different at the run time. Navigation bar "Expected: width=384, Actual: width=375. In realtà questi controller di navigazione non hanno Navigation bar. Navigation baresiste per le subview. Ad ogni modo ho potuto risolverlo da barrare e deselezionare la casella di controllo Shows navigation barin Attributes inspector. Ma sfortunatamente ogni volta che riapro Main.storyboardquesto avviso appare di nuovo. Anche se clicco sul triangolo giallo e poi sui frame di aggiornamento non succede nulla.

inserisci qui la descrizione dell'immagine


1
Lo stesso problema qui confermato. Nessuna delle risoluzioni suggerite risolve il problema.
GregP,

@GregP controlla la mia soluzione e rispondi
KSR

@Ashish Kakkad per favore controlla la mia soluzione e rispondi
KSR

Archiviato rdar: // 28844288. Sentiti libero di ingannare openradar.me/radar?id=4985464104681472
Guillaume Algis,

Questo è il mio ultimo avvertimento che mi sta dando fastidio dopo aver aggiornato il mio progetto.
Sethmr,

Risposte:


154

L'avviso scompare se si modifica la proprietà "Dimensione simulata" in "Forma libera".


37
Questo non risolve il problema. Chiudi Xcode e Apri di nuovo il problema verrà di nuovo.
Ashish Kakkad,

2
Questo mi sta scatenando. Ho appena provato questo, e questo rimuove temporaneamente gli avvisi . È sempre possibile alternare tra le dimensioni simulate avanti e indietro per rimuovere l'avviso quando si ripresenta. Super. Fastidioso.
Nekonari,

5
Solo una soluzione temporanea: questa non è la risposta.
emem

5
Cambia questa dimensione simulata (e torna a "Inferred" o qualsiasi altra cosa) o "attiva / disattiva Regola inserti Scrollview" . Entrambi causeranno la rimozione di Storyboard misplaced="YES". Questo è un bug Xcode e questa correzione è di tipo force-refresh. Tratto da @buildsucceeded answer.
bauerMusic

1
@MobileBloke Con aggiornamento forzato intendevo dire che la vista Storyboard riscriverà (aggiorna) i parametri, rivaluta e rimuove l'avvertimento. È davvero un aggiornamento, forza significava solo che non lo faceva automaticamente da solo (come avrebbe dovuto) e aveva bisogno di qualche modifica arbitraria manuale.
bauerMusic

35

Come menzionato qui , puoi risolvere questo problema attivando / disattivando Regola inserti Scrollview.


4
Wow, e (controllando git) letteralmente tutto ciò che accade quando lo fai è che misplaced="YES"viene rimosso. : /
build completata il

7
Ciò lo risolve fino alla prossima chiusura e riapre il progetto. Non è una soluzione completa.
Casey Wagner,

15

Sono passato da Visualizza come: iPhone 6S a iPhone 5S, quindi sono tornato a iPhone 6S e Xcode ha apportato tutte le modifiche per rimuovere l'avviso.


2
Questo ha funzionato per un breve periodo, poi dopo che Xcode lo ha processato di nuovo - è successa la stessa cosa e si è verificato nuovamente l'avviso. Funziona ancora per te sull'ultimo Xcode?
UKDataGeek

12

Questo ha funzionato per me su Xcode 8.3.1 Dopo aver riavviato Xcode, funzionava ancora.

inserisci qui la descrizione dell'immagine

  1. Seleziona controller di navigazione

inserisci qui la descrizione dell'immagine

  1. Vai a Mostra Impostazioni dimensioni

inserisci qui la descrizione dell'immagine

  1. Cambia la dimensione simulata in forma libera

inserisci qui la descrizione dell'immagine

  1. Riporta la dimensione simulata a Fissa

inserisci qui la descrizione dell'immagine

  1. Quindi gli avvisi scompaiono.

inserisci qui la descrizione dell'immagine


Qualche idea sul perché questo avrebbe funzionato e non sul pulsante "Aggiorna frame"?
Manganese,

@guoc, fratello potresti aiutarmi per favore stackoverflow.com/questions/46375778/… ?
Possa Phyu il

7

Come soluzione alternativa solo per sbarazzarmi del fastidioso avvertimento ho modificato Main.storyboard manualmente rimuovendo 'fuori posto' in:

<navigationBar key="navigationBar" opaque="NO" contentMode="scaleToFill" misplaced="YES" translucent="NO" id="Os1-Xh-7XN">

Un trucco ma è bello avere zero avvisi anziché 1 :)


Dovrò aggiungere questo più tardi? Non mi interessa davvero come appare il mio controller di navigazione fintanto che non ho avvisi. È abbastanza divertente. Lo storyboard riconosce l'avviso per una frazione di secondo e poi scompare quando si entra nello storyboard in questo modo.
Sethmr,

Ho fatto la stessa cosa e poi non toccavo più lo storyboard. Funziona tutto bene.
Zhao,

Il problema è che quando lo ricarichi ritorna ... chiunque si accorga che ci vuole molto tempo per caricare lo storyboard con lo spinner in esecuzione quando si verifica questo errore?
UKDataGeek,

6

Fai clic su "Visualizza come" nella parte inferiore sinistra dello storyboard e scegli una dimensione del dispositivo diversa, quindi fai di nuovo clic su di essa e passa nuovamente alla dimensione del dispositivo con cui hai iniziato. Questo ha funzionato per me.


1
ha anche
risolto il

3

Fino a quando Xcode 8 non è patchato, puoi impostare l'opzione "Visualizza come:" su "iPhone SE" per eliminare l'avviso. Non è l'ideale, ma funziona per ora.


Sto usando SE .. ma comunque avviso
Abdul Waheed

1
Si lo so. Ma vanno via ogni volta che passi quella selezione a qualcos'altro. Oggi inizio con 7, passaggio a SE, quindi di nuovo a 7 per cancellare questi avvisi. O semplicemente lasciarli e non controllare le misplacedproprietà quando si effettuano modifiche.
Nekonari,

3

Ho provato tutti i suggerimenti di cui sopra ma non sembra funzionare. Penso che potrebbe essere un bug più serio.

Ho registrato un bug con Apple Bug Reporter (link: https://bugreport.apple.com/logon ) - se vuoi fare lo stesso, fai riferimento al bug: in 31355220modo che Apple possa collegarlo. Più persone lo segnalano, più informazioni dovranno correggere questo fastidio.


2

Sono stato in grado di eliminare completamente il problema impostando la dimensione simulata del controller di visualizzazione su forma libera e quindi impostando la larghezza da 375 a 320.


Devi solo impostarlo solo sui controller di visualizzazione che non hanno genitori (controller di visualizzazione radice + forse di più, a seconda di ciò che hai nello storyboard)
thetrutz,

1

Ho avuto lo stesso problema, ecco cosa ho fatto per risolvere:

Espandi le informazioni sull'errore e fai clic sul dettaglio dell'avviso. Xcode dovrebbe quindi aprire automaticamente le impostazioni di dimensione / posizione. Sostituire il valore corrente con il valore suggerito nei dettagli dell'avviso.

inserisci qui la descrizione dell'immagine

Fondamentalmente, assicurati che la dimensione nel tuo runtime sia uguale alla dimensione che hai specificato nella finestra di ispezione delle dimensioni.

Puoi anche fare clic sull'icona accanto all'immagine che hai pubblicato (il triangolo giallo con un cerchio bianco. A volte, è un'icona a forma di cerchio rosso), ci saranno opzioni per correggere / regolare automaticamente i problemi.

inserisci qui la descrizione dell'immagine

Ho scelto l'opzione di aggiornamento dei vincoli, quindi ho adeguato i nuovi vincoli di conseguenza.


4
Non funziona in questa situazione. I campi X / Y / Larghezza / Altezza per la barra di navigazione sono tutti in grigio / non modificabili.
Slipp D. Thompson,

@Ian Hmmm ... Penso di aver appena finito di modificare lo xib in modo che i numeri corrispondessero.
Slipp D. Thompson,

1

per me il problema era che nascondevo la barra in basso a spinta (usando la casella IB).

ho dovuto selezionare 'none' nell'opzione 'barra in basso':

inserisci qui la descrizione dell'immagine


0

Ok, quindi sembra che io abbia risolto il problema. Ecco cosa ho fatto.

Seleziona i frame di aggiornamento come di consueto. Apri un altro file e quindi fai clic di nuovo sul file dello storyboard. Se il problema persiste, riavvia Xcode. Sembra che si stia aggiornando internamente, ma l'interfaccia utente del builder di interfaccia è stata bloccata a volte.


3
Dopo la riapertura di XCode questo avviso in realtà scompare, ma se apro un file nel progetto e di nuovo main.storyboardquesti avvisi appaiono di nuovo
Danny

0

Modifica l'anteprima del dispositivo in xcode per Visualizza controller e compila e controlla gli avvisi ...

Xcode 8 è bit buggy, il builder Interface reimposta il suo con no casuale che influenza tutte le viste contenute. Prova a cambiare il dispositivo di anteprima.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.