2016-07-11 14 views
6

La mia app ha una schermata di login di base, una scatola esterna e in essa, alcuni campi di testo e pulsanti. Ho impostato la casella per riempire lo schermo. Tuttavia, su alcuni dispositivi questa casella sarà grande. Voglio impostare una larghezza e un'altezza massime.Come posso impostare la larghezza massima di una vista in IOS?

Come impostare la larghezza e l'altezza massime per una vista?

+1

Autolayout? Codice? – Stefan

+0

Non importa, posso usare qualsiasi cosa. Preferirei farlo nello storyboard. E sì, uso l'autolayout. –

+1

Bene, basta impostare i vincoli per quella casella, sinistra e destra, per soddisfare la spaziatura. Per esempio, le costanti di vincolo sinistro e destro 20. L'impostazione – Stefan

risposta

24

È possibile utilizzare i vincoli auto-layout in modo che la casella si adatta alle dimensioni dello schermo, ma non supera una determinata larghezza e altezza. Per fare ciò, imposta un vincolo "minore o uguale a" su larghezza e altezza.

  1. Aggiungere i limiti superiore, inferiore, iniziale, finale, di larghezza e altezza alla casella.
  2. Impostare la priorità dei vincoli superiore, inferiore, iniziale e finale su Alto (750).
  3. Impostare la relazione per i vincoli di larghezza e altezza su minore o uguale a (≤). Il valore predefinito è uguale a.
  4. Impostare la priorità dei vincoli di larghezza e altezza su Obbligatorio (1000).
  5. Impostare la costante dei vincoli di larghezza e altezza sulla dimensione massima desiderata per la casella.

Set width constraint relation to Less Than or Equal

Set width constraint constant to 1000

Set leading and trailing constraint priority to 750

+0

Questo ha funzionato grazie. –

+0

Questo sembra ambiguo dal modo in cui il layout automatico dovrebbe sapere quale vincolo si interromperà nel caso in cui l'altezza diventi maggiore della costante data. Potrebbe interrompere il vincolo superiore attaccato alla parte inferiore dello schermo o il vincolo inferiore che si attacca in alto. Come funziona? – Sikander

+0

@Sikander Dovrebbe essere utilizzato con altri vincoli, come un vincolo del centro, per mantenere la vista allineata. –

0

Se si sta usando Interface Builder è possibile:

  • Ctrl + clic la vista e trascinare la freccia blu a superview.

  • tenere premuto Shift e selezionare "larghezza pari" e "uguale altezza"

  • Poi vai ai vincoli della vostra vista (piccola icona righello) e impostare un moltiplicatore come 0,5 per rendere la visualizzazione di larghezza/altezza pari a metà della sua rispettiva dimensione panoramica.

-1
UIView *viw=[UIView alloc]init]; 
viw.frame=CGRectMake(x,y,CGFLOAT_MAX,h); 
+0

del frame è diversa dall'applicazione dei vincoli. –

+0

@rvios Aggiungi alcune spiegazioni al tuo codice. Le risposte al solo codice sono scoraggiate su SO. Grazie. –

0

Se si vuole dare cornice di una vista per risolvere tutti i dispositivi quindi utilizzare questo width e height

self.view.frame.size.width,self.view.frame.size.height

Oppure si può dare layout auto TopBottomTrailing e Leading constraints trascinando la vista ai suoi bordi.

-1

Semplice, si utilizzano solo quattro vincoli (spazio in alto, spazio in basso, spazio iniziale, spazio finale) per quella vista del contenitore.

-1

Prova seguente codice si può aiuta a

yourviewObject.frame=CGRectMake(yourviewObject.frame.origin.x,yourviewObject.frame.origin.y,self.view.frame.size.width,yourviewObject.frame.size.height) 
Problemi correlati