2013-02-13 9 views
5

Sto sviluppando un'applicazione con layout automatico disattivato e impostazione predefinita su Iphone 5. Ora ho un UIView nella parte inferiore dello schermo, quando passo tra le opzioni di dimensioni in IB l'UIView si sposta correttamente per sistemarsi su la parte inferiore dello schermo. Tuttavia, quando eseguo il test sul mio IPhone 4 o sul simulatore, non si alza, ma viene tagliato.Come posso fissare un UIView in fondo allo schermo?

Come posso fare in modo che l'UIView in fondo all'app venga smistato verso l'alto per l'IPhone 4 più piccolo?

vedere l'esempio seguente

Io fondamentalmente vogliono la scatola bianca per essere deviato verso l'alto per riempire il vuoto sotto la casella grigia.

Aggiornamento

In termini di gerarchia vista, c'è una vista che contiene e poi la parte bianca che si vede è un semplice UIView (sfondo bianco) con una vista di scorrimento all'interno. Il progetto è abbastanza nuovo, quindi l'installazione è molto semplice e non c'è codice per posizionare nessuna delle UIViews.

+0

Si sta utilizzando AutoLayout? o AutoresizingMask? – Jaybit

+0

Ho disattivato AutoLayout, sto usando la funzione di autosizing – ORStudios

+0

@IconicDigital, le tue immagini da 4 pollici e da 3,5 pollici non si confrontano come per esempio ... vedi la mia risposta aggiornata – foundry

risposta

7

per ottenere la coordinata Y, ottenere l'altezza dello schermo, sottrarre qualsiasi elemento dell'interfaccia utente sopra la vista principale (come la barra di stato) e sottrarre l'altezza del UIView che si sta posizionando. Per esempio:

float y = [UIScreen mainScreen].bounds.size.height - [UIApplication sharedApplication].statusBarFrame.size.height - myView.frame.size.height; 
[myView setFrame:CGRectMake(0, y, myView.frame.size.width, myView.frame.size.height)]; 

Ecco davvero un tipico esempio completo ... 2013 ... questo funziona bene in un UITableViewController con una barra di navigazione in alto, e si sono non utilizzando autolayout.

Position a UIView relative to the bottom of the parent view?

Speranza che aiuta qualcuno.

2

Con AutoLayout disattivato in cui si posiziona la vista sullo schermo è un valore fisso. Per avere questa regolazione automatica hai bisogno di un codice. Dovrai utilizzare un autoresizingMask. Ecco un esempio di utilizzo autoresizingMask/

UIView *view = [[UIView alloc] init]; 
[view setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin]; 
3

Si dovrebbe avere le molle e puntoni (ridimensionamento automatico della maschera) impostare qualcosa di simile ...

enter image description here

Poi la vista manterrà è la distanza dal il piede dello schermo.

aggiornamento

nel tuo commento, dici che hai questo set correttamente ma la vista è ancora spinto verso il basso. Tuttavia, le immagini nella tua domanda non sono confrontabili con simili. Nella versione da 4 pollici la tua vista sembra scorrere sopra la parte superiore dello schermo, il che non è il caso della versione da 3,5 pollici. Sospetto che qui sia la causa (o è solo che b/c hai dovuto far scorrere il tuo da 4 pollici per adattare il problema sullo schermo?) ... puoi controllare e magari aggiornare la tua domanda con maggiori dettagli sulla tua gerarchia di visualizzazione.

+0

Ciao, ce l'ho messa a punto ma lo sta ancora ignorando. – ORStudios

+0

@IconicDigital - ok allora è strano. Hai qualche codice per impostare i parametri del frame sulle viste o qualcos'altro? – foundry

+0

La cosa divertente è che se passo tra le taglie in IB si muove bene. Se lo provi nel simulatore, lo taglierà. – ORStudios

1

Il modo più semplice per farlo è selezionare la vista, quindi andare su Editor -> Pin -> Spazio inferiore a SuperView. Questa opzione corregge la tua vista nella parte inferiore della vista del contenitore, indipendentemente dalla risoluzione del dispositivo.

1

Estensione di risposta @Joel, per iOS 7 non è necessario sottrarre l'altezza statusBar.

float y = [UIScreen mainScreen].bounds.size.height - myView.frame.size.height; 
[myView setFrame:CGRectMake(0, y, myView.frame.size.width, myView.frame.size.height)]; 
Problemi correlati