Impossibile ridimensionare UIView in IB


88

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

Ho creato una nuova vista XIB in xcode e nell'ispettore delle dimensioni, la larghezza e l'altezza sono disabilitate e visualizzate in grigio a 320 per 460. Questoè strano dato che posso cambiare la dimensione per le altre due viste (associate alle altre due barre delle schede elementi).

Non sono sicuro che abbia qualcosa a che fare con, ma di recente ho aggiornato l'SDK a 3.

Grazie!

Risposte:


81

Penso che non sia possibile modificare la dimensione durante la simulazione di elementi dell'interfaccia utente come la barra di stato in Interface Builder. Potresti provare a disattivare gli elementi simulati se ne sono abilitati. Non sono esattamente sicuro del motivo, quindi apprezzerei il feedback di chiunque sappia perché esattamente questo è - ci deve essere una buona ragione.


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

1
Come in Xcode 4.2, iOS 5.0.1 questo è cambiato. La mia risposta di seguito spiega come questo può essere ottenuto.
lol

1
Molto utile. Basta disattivare la barra di stato, regolare le dimensioni e quindi riattivare la barra di stato.
Wollan

9
Questa impostazione ha funzionato per un ViewController.xib in Xcode 4.3.3: "Metriche simulate - Dimensioni: formato libero". Successivamente, l'impostazione della dimensione della visualizzazione è abilitata. Rimuovi anche l'opzione "Modalità di visualizzazione" scala per riempire (appena sotto le metriche simulate).
defvol

uuuugh Non mi piace davvero questo IDE
Saik Caskey,

80

Per ottenere ciò in XCode 4.6.3 / 5.0.2 devi seguire lo screenshot qui sotto:

  1. In "File Inspector" -> deseleziona Use Auto Layout
  2. Fare clic su Selettore attributi e scegliere Freeformper dimensione

Questo è necessario quando si crea un headerView per un tableView

inserisci qui la descrizione dell'immagine


40

La parte che stai cercando si trova nel primo pannello Impostazioni (Comando-1). Proprio in alto c'è una sezione denominata Elementi dell'interfaccia utente simulati. Per impostazione predefinita, la barra di stato è attiva. Devi assicurarti che tutti e tre siano impostati su Nessuno.


2
Grazie, queste risposte mi hanno fatto risparmiare un sacco di tempo! Qualcuno sa perché IB fa questo?
Gregor

Grazie compagno. Stavo cercando quello.
natanavra

Nota per tutti, questo ora è: "Non specificato" invece di nessuno. (Ho la versione 3.2.3)
IcyBlueRose

Confermo che per iPad è "Unspecified", grazie Thomas Mon, mi hai risparmiato alcune ore: D
Qlimax

Lo vedo solo per i controller di visualizzazione, non per le visualizzazioni
BigBoy1337

26

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

Se modifichi questo attributo in 'Forma libera', puoi ridimensionare l'UIView contenuto all'interno di UIViewController mentre simuli anche la barra di stato (o qualsiasi altra delle simulazioni per quella materia)


1
L'attributo size ora è predefinito su "Retina 4 Full screen", ma il cambiamento in "Freeform" funziona ancora.
Pier-Luc Gendreau

4

Vai all'ispettore, vai al primo pannello (o premi il comando-1) e poi cambia i campi contrassegnati Barra di stato, Barra superiore e Barra inferiore su Nessuno nella sezione chiamata "Elementi dell'interfaccia utente simulati". Potrebbe essere necessario fare clic sul triangolino per renderli visibili.


1

Divertente, ho un problema simile. Ho rimosso tutte le viste dal file xib e ho aggiunto di nuovo una vista. Imposta la barra di stato su "non specificato" in modo che la barra di stato non sia adatta. La vista, una volta aggiunta, viene creata con x = 0, y = 0, w = 320 h = 460 invece di (0,0,320,480) come mi sarei aspettato. Dopo aver modificato l'altezza a 480 e averlo collegato al proprietario del file e aver cambiato il colore per renderlo distintivo rispetto allo sfondo. Ho scoperto che c'era una banda bianca tra la parte superiore dello schermo e la vista. Ho aumentato il mio codice con:

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

all'interno di viewDidLoad

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

Si scopre che la vista è così come è caricata da IB è in realtà (0, 20, 320, 480) Per aggirare il problema ho reimpostato 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 soluzione per questo.


3
Cordiali saluti, puoi usare NSStringFromCGRect (rect) per ottenere una stringa stampabile che rappresenta un CGRect.
Berry

È stato un grande FYI, l'ho controllato e puoi effettivamente ottenere un valore di stringa anche da un CGPoint e CGSize! molto cuoco, grazie.
FierceMonkey

1

Ho notato che la UIView creata automaticamente durante la creazione del file xib non può essere ridimensionata dal pannello di dimensionamento o dalle maniglie del bordo.

Tutto quello che ho fatto è stato aggiungere un altro UIView e trascinare tutto dal mio vecchio UIView a quello nuovo, quindi ho eliminato quello vecchio.

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

Sto usando il builder di interfaccia integrato XCode 4.


0

L'ho risolto in un modo diverso ...

apri il tuo xib 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 con cui stai tentando di collegare il tuo pennino / xib.

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


0

inserisci qui la descrizione dell'immagineNello storyboard seleziona l'UIVew e vai all'ispettore degli attributi cambia la dimensione di UIVew in "FreeForm" invece di "Inferred"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.