2014-07-17 9 views
9

Sto incontrando un problema con il caricamento automatico per la mia vista di dettaglio in un UISplitViewController. La mia gerarchia di viste contiene uno UIImageView con un elemento decorativo e le dimensioni intrinseche della vista dell'immagine sembrano rovinare il layout del resto dei controlli.Come posso ottenere l'autolayout per sovrascrivere le dimensioni intrinseche di UIImageView?

seguenti sono i vincoli ho specificati per la visualizzazione dell'immagine:

H:[UIImageView:0xc83ba90]-(NSSpace(20))-| 
H:|-(NSSpace(20))-[UIImageView:0xc83ba90] 
UIImageView:0xc83ba90.bottom == UITextField:0xc83d2d0.bottom 
V:[UIImageView:0xc83ba90 (3)]>, 
H:[UIImageView:0xc83ba90 (532)] Hug:1 CompressionResistance:750 
V:[UIImageView:0xc83ba90 (2)] Hug:250 CompressionResistance:750 

Il comportamento che voglio è per la visualizzazione dell'immagine da ridimensionata per riempire il suo superview, come descritto dai primi due vincoli. Il comportamento effettivo che sto vedendo è che la vista dell'immagine occupa solo uno spazio orizzontale descritto dal suo vincolo di dimensione intrinseca. Sembra anche che stia cambiando il layout di tutte le viste di pari livello, come se la superview stendesse solo le viste in un rettangolo largo quanto la vista dell'immagine.

Ho pensato che specificare la priorità di abbraccio della vista dell'immagine il più basso possibile avrebbe lasciato che gli altri vincoli lo sovrascrivano per ridimensionare la vista dell'immagine. Cosa sto facendo di sbagliato qui?

+2

[ 'UIImageView' non definisce una dimensione contenuto intrinseco di default] (https://stackoverflow.com/questions/14528172/uiview-and-intrinsiccontentsize). Puoi pubblicare una foto di IB per farci vedere il layout? È difficile avere un'idea di cosa vuoi fare solo con il testo. –

+1

Quale parte di Interface Builder? Ci sono molti controlli coinvolti. Sembra che UIImageView stia prendendo le dimensioni dell'immagine come dimensione intrinseca. – Greg

+2

Problemi con lo stesso problema. Supponi che un'immagine sia 300x100. Voglio che mantenga le stesse ** proporzioni ** su un iPad e iPhone. Tuttavia, le sue dimensioni originali sovrascrivono qualsiasi vincolo dinamico. Quindi sembra troppo piccolo su un iPad o troppo grande su un iPhone. – bauerMusic

risposta

3

Quindi, ho finalmente trovato una soluzione.

soluzione è di aumentare la priorità di Abbracciare SuperView ad alto (750 o più) e diminuire la priorità resistenza a compressione di UIImageView su Basso (250 o meno). Ciò consentirà ai vincoli di sovrascrivere l'immagine Dimensione intrinseca.

Content Hugging Priority - The higher this priority is, the more a view resists growing larger than its intrinsic content size. 
Content Compression Resistance Priority - The higher this priority is, the more a view resists shrinking smaller than its intrinsic content size. 
+1

Bello, risolto il problema. – Paludis

Problemi correlati