2016-06-24 28 views
15

Ho una tabellaView con celle statiche. La cella contiene un ImageView che lo riempie completamente. E ho un altro più piccolo ImageViews in cima. Posiziono questo ImageViews con vincoli. Ho una domanda sul ridimensionamento dei vincoli. Come posso impostare diverse costanti di vincolo per diverse dimensioni di dispositivi senza programmare se/else cicli. C'è un modo per impostarlo nello storyboard? Ho un vincolo che porta al layout di genitore per esempio con un valore costante di 10. Questo va bene per lo schermo di iPhone 5, ma su un iPhone 6/6 più schermo dovrebbe essere superiore a 10. iPhone5 AutolayoutiPhone6 AutolayoutCome impostare diversi vincoli di layout automatico per diverse dimensioni dello schermo

+2

'senza programmazione if/else loop' - if/else è un ramo * *, non un * ciclo *. –

+0

dove l'hai trovato? :-)) –

+1

Un altro approccio è utilizzare il rapporto https://github.com/onmyway133/blog/issues/35 – onmyway133

risposta

5

Infine, ho trovato la soluzione che funziona nel mio caso.

  1. ho messo la vista trasparente e ha aggiunto Allinea al centro X/Y per Superview (immagine di sfondo) con la necessaria compensazione nel modo che si adatta al mio telaio per i manifesti (l'immagine di sfondo) - Constraints for the transparent view
  2. Poi Aggiungo Larghezza/altezza uguale al mio Superview (immagine di sfondo) per quella vista trasparente e cambio moltiplicatore in larghezza uguale (manualmente ho scelto 0.61)
  3. Successivamente, ho atterrato il mio 1 poster. Ho anche centrato sia verticalmente che orizzontalmente con offset e ho usato questa serie di vincoli: Larghezza proporzionale a Superview, Proporzione.
  4. E l'ultimo che ho disposto il mio secondo poster con questi vincoli. Spazio principale a Poster1, Allinea CenterY a Poster1 (con l'offset nel mio caso) e Larghezza/altezza uguale.Constraints for the Poster 1/2

Come risultato, ho davvero adattivo Autolayout che funziona quasi grande su iPhone 5-6-6 +

40

Molto facile. È possibile modificare i valori delle costanti per le classi di dimensione della differenza in Storyboard. Ti sto dando qualche passo dopo il quale sarai in grado di afferrarlo.

Prima creiamo costanti come si può vedere in questa vista enter image description here

successiva selezioniamo la costante vogliamo cambiare il valore in altre classi dimensionali. enter image description here

Ora arriva la parte difficile. Nell'ispettore attributi dopo aver selezionato la costante, puoi vedere il valore della costante. Subito accanto puoi vedere il segno PLUS (+), a sinistra della "costante". enter image description here

Fare clic su di esso e selezionare la classe di dimensioni desiderata. Qui ho selezionato la Regular Regular Height Width per le taglie iPad. enter image description here

Successivamente gli diamo un nuovo valore. Quindi la costante, che normalmente ha valore 61, funzionerà come 10 quando renderizzata in una classe di dimensioni delle classi di dimensioni dell'iPad. enter image description here

Ecco l'output - iPhone 4-enter image description here

iPad Air - enter image description here

Come si può vedere, le stesse costanti ha valore diverso in fase di esecuzione corrispondenti a diverse classi dimensionali.

Spero che la mia spiegazione ti abbia aiutato.

+0

Saheb, grazie mille !! Una risposta così bella e copre completamente una parte del mio problema: funziona con dispositivi che hanno diverse dimensioni (iPhone/iPad). E cosa posso fare quando si tratta del ridimensionamento perché l'immagine di sfondo che riempie la mia cella è più ampia su iPhone6 ​​che su iPhone5! questo fa sì che due poster migliori vengano spostati rispetto all'immagine di sfondo, come si può vedere sopra. –

+1

per altri dispositivi come iPhone4 e 5, con le stesse classi di dimensioni è possibile controllare e modificare manualmente i vincoli o è possibile progettare le immagini in tale aspetto. –

+0

Conosco questa soluzione e sto ancora cercando quella universale che funzionerà con qualsiasi dispositivo ;-)) –

Problemi correlati