2014-09-08 14 views
13

Ho provato a creare una vista personalizzata freefrom con il generatore di interfacce. Ho un UIView che contiene UIImageView e UILabel. Ho impostato i vincoli per regolare l'etichetta in base all'immagine ecc. E un margine per la superview.Altezza schermo ritratto implicito iPhone

Ora voglio che il superview si adatti esattamente alle sottoview. Ma quando premo Editor -> Dimensioni per adattarsi al contenuto, la superview non viene ridimensionata completamente ei vincoli sono in conflitto. Ciò che appare è un vincolo implicito ("Altezza schermo ritratto iPhone"), che non può essere alterato/eliminato. Veda la figura sottostante:

enter image description here

+1

Ho anche incontrato questo problema oggi. Mi sembra che la vista radice sia sempre trattata come se fosse la dimensione dell'intero schermo anche se l'ho impostato come a mano libera. Sto considerando di presentare un bug con Apple. –

+1

Hai trovato una soluzione a questo? Sto avendo lo stesso problema oggi. – Kremk

+1

Qualche aggiornamento su questo? Sembra ancora essere un problema. – Tylerc230

risposta

0

solo per rendere semplice dimenticare l'etichetta per il momento. Hai già aggiunto il vincolo di larghezza e altezza della vista dell'immagine, ora invece di usare il contenuto di sizetofit, prova ad aggiungere i vincoli iniziali, finali, superiori e inferiori tra la vista dell'immagine e la sua vista genitore. Con questo la vista genitore dovrebbe adattarsi alla vista dell'immagine.

La stessa tecnica (vincoli alla vista padre) può essere utilizzata per farlo funzionare con la vista immagine e l'etichetta insieme.

+0

Ho già questi vincoli e non funziona. Ho impostato la principale, finale, ... priorità a 1000, il che significa che sono obbligatori. Quindi appaiono questi strani vincoli impliciti (iPhone Screen Screen Height). Sembra che il costruttore dell'interfaccia desideri mantenere le proporzioni della modalità verticale. Ma questa vista verrà utilizzata come MKAnnotationView, quindi non è necessario per me mantenere il rapporto. – kaeLum

+0

e succede solo, quando la superview è la rootview del pennino! – kaeLum

+0

questo è un problema serio per me! – kaeLum

1

Anche se non è l'ideale, a seconda di come è strutturato XIB e di come si fa riferimento alla vista, è possibile creare una vista "scratch pad" e posizionare la vista personalizzata all'interno di essa solo per vedere come tutto sarà configurato. Cioè se stai impostando la vista su una presa definita nel proprietario del file XIB, puoi semplicemente collegarlo alla vista che hai creato all'interno del "scratch pad".

Ad esempio, ho creato una vista contenitore con un quadrato e un interruttore all'interno. L'esempio in alto si lamenta dei vincoli in conflitto e non si configura correttamente, mentre l'esempio in basso mostra la stessa cosa centrata in una vista a scomparsa. Di nuovo, non ideale, ma funziona per me.

enter image description here

Edit: Ho appena realizzato che alcuni vincoli di classe dimensioni potrebbero essere persi una volta che il "scratch pad" Vista viene scartato in modo che è un'altra delle rughe da considerare. Ancora esaminando questo.

0

Ho notato che quando ho trascinato fisicamente la larghezza e l'altezza della superview per soddisfare i vincoli, gli errori del vincolo rosso sono scomparsi insieme al vincolo "Larghezza schermo ritratto iPhone". In altre parole, i miei vincoli impongono che la mia sottoview sia allineata in basso con la sua super vista. Se ho trascinato il bordo inferiore della superview per allineare a filo con la sottoview, gli errori sono andati via. Sembra ancora bacato e non intuitivo.

+0

In Xcode 6.3.1, questo non funziona ancora.Questo non sembra bacato e non intuitivo. Questo è bacato e non intuitivo. Ora l'unica soluzione che ottengo è di modificare il vincolo e la dimensione del contenitore. Tutta la mia produttività è persa con quel tipo di s .... Mi dispiace ammetterlo ma XCode/IB/Swift sembra un lavoro così sciatto e non migliorano la mia produttività come Apple lo vende. –

Problemi correlati