2012-12-19 11 views
5

Mi dispiace se ho perso qualcosa qui, ma ho pensato che gli oggetti UIView creati in IB avrebbero dovuto creare i loro frame in viewDidLoad in modo da poter eseguire l'installazione iniziale basata su questa vista in viewDidLoad o awakeFromNib o viewWillAppear. Ho registrato l'output in ciascun metodo:UIView creato in IB non ha frame in viewDidLoad e awakeFromNib

NSLog(@"%@ %s", NSStringFromCGRect(self.zoomView.frame), __FUNCTION__); 

E in tutto ricevo {0, 0, 0, 0}.

Questo è il primo pennino nella mia UIStoryboard, e sto usando Autolayout e iOS 6. Avrei potuto giurare su app precedenti Ho usato il frame di altri oggetti UIView creati in IB per impostare le cose. C'è qualcosa che è cambiato? O lo ricordo solo erroneamente? Grazie!

+2

Sei sicuro al 1000% che IBOutlet sia collegato alla vista? –

+0

@ 0x7fffffff Sì, sono positivo al 100% quando IBOutlet è collegato. L'ho disconnesso e ricollegato per assicurarsi che non fosse il problema. – Crystal

+0

Se è sicuramente collegato, stai chiamando alloc/init su questa vista in qualsiasi momento? –

risposta

4

Ho avuto lo stesso identico problema. Sì, ti ricordi bene - era un po 'diverso in iOS 5. Ho sempre impostato le mie viste in viewDidLoad: e il frame era già come sarebbe stato quando la vista era effettivamente sullo schermo.

Ora in iOS 6, è necessario inserire il codice in viewDidAppear: per utilizzare un frame valido, se auto layout è abilitato. Apparentemente il lay-out è fatto tra queste due chiamate.

+0

Se si desidera abilitare in entrambe le opzioni, disattivare l'opzione di Autolayout. – itechnician

0

Penso che abbia a che fare con il dispositivo che si sta utilizzando e possibilmente altre cose ma i frame ei limiti "potrebbero" essere impostati a volte dal momento in cui viewDidLoad viene richiamato e talvolta no (dipende da ....) Sul Altrimenti, i frame e i limiti sono garantiti per essere stati impostati nel momento in cui è stato chiamato "ViewDidAppear". E tu vuoi mettere il tuo codice relativo ai frame e ai limiti in cui è garantito!

Problemi correlati