2009-07-06 12 views
82

Probabilmente qualcosa di semplice, ma non riesco a capire perché non riesca a ridimensionare un UIView in uno xib in Interface Builder.Impossibile ridimensionare UIView in IB

Ho creato una nuova vista XIB in xcode e nella finestra di ispezione dimensioni, la larghezza e l'altezza sono disabilitate e visualizzate in grigio a 320 per 460. Questo è strano poiché posso modificare la dimensione per le altre due viste (associate al altri due elementi della barra delle schede).

Non sono sicuro se questo ha qualcosa a che fare con ma di recente ho aggiornato l'SDK per 3.

Grazie!

risposta

78

Penso che non è possibile modificare le dimensioni mentre si simula qualsiasi elemento dell'interfaccia utente come la barra di stato in Interface Builder. Potresti provare a disattivare gli elementi simulati se sono attivati. Non sono proprio sicuro del motivo per cui ciò accada, quindi apprezzeremmo i feedback di chiunque sappia perché esattamente questo è - ci deve essere una buona ragione.

+1

Grazie è giusto. Dopo aver aggiornato xcode e IB, la barra di stato era attiva per impostazione predefinita. Gli altri ce l'hanno. –

+0

+1 a tutti e due .. !! –

+1

Come in Xcode 4.2, iOS 5.0.1 è cambiato. La mia risposta qui sotto spiega come raggiungere questo obiettivo. – lol

40

La parte che si sta cercando si trova nel primo pannello di controllo (Command-1). Proprio in cima c'è una sezione etichettata come Elementi dell'interfaccia utente simulata. Per impostazione predefinita, la barra di stato è attiva. È necessario assicurarsi che tutti e tre siano impostati su Nessuno.

+2

Grazie, queste risposte mi hanno appena salvato un sacco di tempo! Qualcuno sa perché IB lo fa? – Gregor

+0

+1 Questo mi sta facendo impazzire! Grazie! – Bogatyr

+0

Grazie amico. Ho cercato quello. – natanavra

4

Basta andare all'ispettore, andare al primo pannello (o premere il comando-1) e quindi modificare i campi contrassegnati Barra di stato, Barra in alto e Barra in basso in Nessuno sotto la sezione chiamata "Elementi dell'interfaccia utente simulata". Potrebbe essere necessario fare clic sul piccolo triangolo per renderli visibili.

0

Divertente Ho un problema simile. Ho rimosso tutte le viste dal file xib e ho aggiunto nuovamente una vista. Impostare la barra di stato su "non specificato" in modo che la barra di stato non sia adattata per. La vista, quando aggiunta, viene creata con x = 0, y = 0, w = 320 h = 460 anziché (0,0,320,480) come mi sarei aspettato. Dopo aver cambiato l'altezza a 480 e averlo collegato al proprietario del file e cambiato il colore per renderlo distintivo in relazione allo sfondo. Faccio notare che c'era una fascia bianca tra la parte superiore dello schermo e la vista. Ho aumentata mio codice con:

#define RECTLOG(rect) (NSLog(@"" #rect @" x:%f y:%f w:%f h:%f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height)); 

entro viewDidLoad

 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    RECTLOG(self.view.frame); 
} 

scopre che la vista è come è caricato dalla IB è in realtà (0, 20, 320, 480) Per ovviare Ho resettato il frame della vista con self.view.frame = CGRectMake (0, 0, 320, 480);

sto usando IB 3.2.5

Mi piacerebbe sapere di una piccola correzione per questo.

+3

FYI, puoi usare NSStringFromCGRect (rect) per ottenere una stringa stampabile che rappresenta un CGRect. – Berry

+0

Questa è stata una grande esperienza, l'ho verificata, e puoi anche ottenere un valore di stringa da un CGPoint e da CGSize! molto cuoco, grazie. – FierceMonkey

1

Ho notato che l'UIView creato automaticamente durante la creazione del file xib non può essere ridimensionato dal pannello di ridimensionamento o dagli handle di bordo.

Tutto ciò che ho fatto è stato aggiungere un altro UIView e trascinato tutto dal mio vecchio UIView a quello nuovo, quindi cancellato quello vecchio.

Ha risolto il problema per me ma sì, penso che ci sia un problema di fondo con il generatore di interfacce per Apple da risolvere (qualcuno mi corregga se sbaglio).

Utilizzo il generatore di interfacce integrato XCode 4.

25

Come in Xcode 4.2, iOS 5.0.1, le metriche simulate predefinite includono la simulazione dell'attributo 'size' di UIViewControllers a 'Inferred'

Se si modifica questo attributo su 'Freeform', è possibile ridimensionare l'UIView contenuto in UIViewController e simulare anche la barra di stato (o di qualsiasi altra delle simulazioni per questo)

+1

L'attributo di dimensione ora è impostato su "Retina 4 Full screen", ma il suo cambiamento in "Freeform" funziona ancora. –

63

al fine di ottenere che in XCode 4.6.3/5.0.2 è necessario seguire screenshot qui sotto:

  1. sotto 'ispettore File' -> untick Use Auto Layout
  2. Fare clic su Attributi S elettore & Scegli Freeform per Size

Ciò è necessario quando si crea un headerView per un tableView

enter image description here

0

mi ha risolto in modo diverso ...

aprire il XI ter con il tuo editor di testo preferito e modifica questa riga

 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CompassViewController"> 

CompassViewController è il nome della classe che si sta tentando di collegare il pennino/xib con.

Basta modificare il nome della classe con il nome corretto della classe e il gioco è fatto;)

Problemi correlati