2015-03-26 17 views
61

sto usando storyboard per la prima volta nella mia appMisplaced vista ogni volta che si riavvia Xcode

Quando chiudo Xcode, ho 0 avvertimenti circa vista fuori luogo o qualcosa di pertinenza alla mia storyboard. Quando riavvio Xcode e apro lo storyboard, 3 delle mie 15 scene hanno avvertimenti di visualizzazione fuori posto.

Senza toccare nulla (oltre alla selezione del file), posso emettere un numero git status e verificare che il file .storyboard abbia delle modifiche. Se io git diff, vedo questo inserito in molteplici aree del file:

<variation key="widthClass=compact" misplaced="YES"> 
    <rect key="frame" x="8" y="56" width="130" height="34"/> 
</variation> 

Se un elemento già <variation key="widthClass=Compact" nodo, quindi il misplaced attributi e rect nodo vengono aggiunti.

L'unica cosa che devo fare per far sparire gli avvertimenti è fare clic su ognuno di essi, assicurarsi che sia selezionato "Aggiorna frame" e fare clic su "Correggi errore". Questo risolve tutto finché non riavvio Xcode.

La struttura di base della mia scena è:

UIView 
    UICollectionView 
     UICollectionReusableView 
     UICollectionViewCell 
     UICollectionViewCell 
    UISegmentedControl 

Come posso evitare che ciò accada ogni volta che si riavvia?

+0

Probabilmente la stessa cosa (o relativa) ... http://stackoverflow.com/a/6903204/499581 –

+4

È un problema di XCode come @ I'L'l. – atulkhatri

+2

a volte se apri lo storyboard e non cambi nulla, si verifica l'avviso errato, vedrai apparire subito il simbolo M quando apri il file storyboard. non aprire la piastra di protezione se non si desidera apportare modifiche. –

risposta

-3

Prima verifica di aver implementato tutti i vincoli. Se tutti i vincoli sono corretti, eliminare il vincolo relativo e ripetere nuovamente.

+1

Sto affrontando lo stesso problema, ma puoi facilmente risolverlo usando semplicemente "Correggere il dislocamento". Non devi preoccuparti perché è successo quando non stai usando la dimensione normale. – WasimSafdar

0

Questo problema si verifica quando si aggiungono vincoli che non si adattano alle dimensioni effettive dello schermo in fase di esecuzione. ad esempio: se hai un UIButton con larghezza che supera la larghezza dello schermo (diciamo larghezza 600) e aggiungi un vincolo di larghezza fissa a tale UIButton ma nessun vincolo iniziale o finale, Xcode non ti darà avvertimenti poiché non ci sono conflitti, ma quando si esegue l'app su un dispositivo o simulatore con una larghezza dello schermo inferiore a 600, Xcode regolerà automaticamente la larghezza di UIButton per adattarsi alla larghezza dello schermo inferiore a 600, facendo sì che i vincoli di layout cambino in base allo schermo in fase di runtime

0

Se si utilizzano classi di dimensione, i vincoli non sono validi fino al segno (in base a tutti i tipi di dispositivo se Any-Any). In caso contrario, provare a regolare la cornice o i vincoli e ricontrollare.

Anche il layout automatico può causare questo problema. Riceverai tutte le informazioni relative all'avviso dopo aver cliccato su di esse.

0

Ero solito affrontare lo stesso problema con la mia app precedente. Quello che ho notato è che la dimensione degli storyboard è importante qui.

Questo è un problema Xcode.

Se si utilizza lo storyboard di di qualsiasi altezza qualsiasi, questo problema non si verifica. Se si utilizzano gli storyboard delle dimensioni larghezza regolare larghezza regolare, si verifica questo problema.

Così tenta di utilizzare dimensioni predefinite storyboard in Xcode

0
  1. clic per visualizzare in anteprima un file regolare (non .xib o .storyboard file)
  2. smettere di Xcode
  3. corsa git checkout .
  4. riavvio Xcode

il file .storyboard non è stato modificato ora.

0

Una semplice soluzione può essere semplicemente consentire a xCode di scegliere i vincoli per voi, quindi tornare indietro e controllare cosa ha scelto per assicurarsi che funzioni per voi.

In storyboard:

  • Selezionare View Controller ti dà problemi
  • Risoluzione automatica problemi di layout (in basso a destra)
  • Visualizzazioni selezionati: Ripristina suggerite Vincoli

Per controllare quali vincoli sono stati resettati:

  • selezionare ogni View all'interno del controller
  • Vincoli Inspector (in alto a destra)
  • scorrere verso il basso ed esaminare i vincoli
2

Questo generalmente accade quando non hai impostato correttamente i vincoli.

Provare a rimuovere tutte le viste all'interno di UIViewController e aggiungerle nuovamente di nuovo insieme ai propri vincoli.

Pulisci ed esegui il codice.

2

Uno dei possibili motivi per le visualizzazioni errate è: Se sono state utilizzate viste in tempo reale (IBDesignables) in storyboard, se si apre lo storyboard e si passa rapidamente a un altro file prima che IB abbia terminato di costruire tutte le visualizzazioni live, il le visualizzazioni si perdono. IB inizia a costruire le viste dal vivo non appena si visualizza la storyboard nell'editor. Per correggere le visualizzazioni fuori posto, concedi a IB un po 'di tempo per finire di costruire lo storyboard rimanendo sullo storyboard per qualche istante, e le viste malriposte verranno corrette.

+0

Questo in realtà non risponde alla domanda. Se hai una domanda diversa, puoi richiederla facendo clic su [Invia domanda] (http://stackoverflow.com/questions/ask). Puoi anche [aggiungere una taglia] (http://stackoverflow.com/help/privileges/set-bounties) per attirare maggiormente l'attenzione su questa domanda una volta che hai abbastanza [reputazione] (http://stackoverflow.com/help/ che cosa è-la reputazione). - [Dalla recensione] (/ recensione/post di bassa qualità/12947482) – HiDeo

+0

@HiDeo: Stavo cercando di rispondere alla domanda, ma la mia selezione di parole non era corretta, immagino. Ho modificato il post per avere più senso (spero!) – SHN

0

Nella parte inferiore dello story board abbiamo la possibilità di selezionare la classe di dimensioni. Se cambio l'opzione da wRegular hRegular a qualsiasi altra opzione ottengo il problema simile. Non ne conosco il motivo.

Provare a risolverlo selezionando la stessa classe di dimensione dopo aver aperto il progetto come è stato selezionato prima di chiudere il progetto.

Ad esempio, se è stata selezionata la classe di dimensione come wCompact hRegular per iPhone e si è chiuso il progetto. Dopo aver riaperto di nuovo il progetto, vedrai che la classe della dimensione è cambiata in wRegular hRegular. Per questo motivo gli oggetti vista cambiano. Seleziona nuovamente wCompact h Regolare per risolvere il problema.

Spero che possa essere d'aiuto.

1

Affronto lo stesso problema in precedenza, e suppongo che non sia colpa nostra, è solo un bug di Xcode.

Se il file .storyboard cambiato, ma non ha toccato nulla, basta selezionare il file e selezionare il menu Xcode Source Control ->Discard Changes in "xxxx.storyboard"..., dovrebbe essere il lavoro :)

2

Nel mio caso accade per tutte le etichette/pulsanti con caratteri personalizzati e dimensioni intrinseche (non definite esplicitamente). Sembra un bug Xcode.

+0

È un bug Xcode, e sembra essere ancora lì/indietro in Xcode 8.2.1. Soluzione alternativa: utilizzare il codice per le viste. – brainray

Problemi correlati