Ho un file xib che rappresenta una vista semplice con layout automatico che sto istanziando con [[NSBundle mainBundle] loadNibNamed:@"name"][0]
e aggiungo a uno UIView
creato in modo programmatico tramite addSubview:
.XIB layout automatico incorporato in UIView programmatico senza ridimensionamento del padre
Il problema è che la vista non si estende per soddisfare le dimensioni della vista in cui è incorporata; piuttosto sembra essere il default alla dimensione che è stata specificata nel file xib. (Non riesco anche a trovare alcun modo per impostare i vincoli sulla vista contenitore stessa nel file xib, solo le sue sottoview.)
Anche in modo un po 'strano, quando ruoto l'iPad, la larghezza della vista si riduce ulteriormente proporzionalmente. Quindi è chiaramente cablato in qualche modo, ma con valori iniziali sbagliati.
Quale connessione mi manca per ottenere correttamente questa visualizzazione incorporata per adattarla alla gerarchia di viste?
Schermate (colorazione magenta aggiunto per il debug):
Dopo aver girato a verticale:
Grazie per l'aiuto. Peccato che Xcode non permetta di configurare i vincoli per questo nel generatore di interfacce. Normalmente mi piace fare cose nel codice, ma l'auto-layout non è sicuramente una di quelle cose. ;) Ho finito per installare la libreria ** PureLayout ** (https://github.com/smileyborg/PureLayout) e il suo metodo 'autoPinEdgesToSuperviewEdgesWithInsets' funziona alla grande. Saluti! – devios1
Prego. I vincoli riguardano due viste. In una vista NIB, la superview non è presente, quindi non c'è nulla per i vincoli a cui fare riferimento. Inoltre, i vincoli dovrebbero essere aggiunti alla superview, non alla vista nella NIB.Infine, un caso d'uso importante per una vista NIB è per le viste che possono essere utilizzate in vari contesti. Non è appropriato per il punto di vista stabilire in che modo si relazionerà ai suoi dintorni in contesti arbitrari. Questo è un lavoro per il controller che lo carica e lo aggiunge in un'altra gerarchia di viste. –
Non so se 3 anni ha cambiato questo, ma quando hai detto "In una vista NIB, la superview non è presente", ho pensato: ma in uno storyboard in cui una visione di quella classe è stata inserita in una scena , ci dovrebbero essere abbastanza informazioni lì per determinare quella superview. IMHO, IB dovrebbe solo gestirlo. A meno che non manchi qualcosa e la gente di Xcode si limita a scrollare le spalle e dice che non vale la pena il nostro tempo per aggiungere quella capacità. –