La respuesta de Rob Mayoff es correcta y excelente, pero por decirlo ligeramente: viewDidLoad
solo significa que la vista se ha cargado, es decir, que el controlador de vista ha obtenido su vista. No significa que la vista se haya colocado en la interfaz. Eso, de hecho, es una de las cosas que viewDidAppear:
significa, y es por eso que funcionó cuando ejecutó su código allí.
El truco en este tipo de situación, en el que desea inicializar algo sobre la vista, es hacerlo lo suficientemente tarde pero hacerlo solo una vez. viewDidAppear:
podría volver a llamar fácilmente más tarde, pero no desea volver a inicializar la vista (a menos que se haya descargado). En iOS 5, isMovingToParentViewController
le permite distinguir las circunstancias particulares que está buscando. Antes de eso, podría ser necesario configurar un indicador BOOL para que realice inicializaciones finales solo una vez.
Una trampa relacionada es lo que sucede cuando la aplicación se inicia en orientación horizontal. Aquí, también, viewDidLoad
es demasiado pronto porque la interfaz aún no ha girado en el paisaje.
Sin embargo, este problema no debería surgir en absoluto. No debe ser de su incumbencia insertar una vista de controlador de vista. La vista es el controlador de vista raíz, en cuyo caso su tamaño se atiende automáticamente o es el elemento secundario de un controlador de vista principal, en cuyo caso es el trabajo del controlador de vista principal el tamaño de la vista (como UINavigationController, por ejemplo, ya lo hace), o la vista debe presentarse de forma modal, en cuyo caso su tamaño se establecerá automáticamente para que coincida con la vista a la que reemplaza. Por lo tanto, sugeriría que la pregunta misma sugiera que está haciendo algo mal.
nota, también se pueden observar los cambios de valor mediante el uso de [Valor Llave Observando] (http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html), aunque no dará exactamente el mismo resultado que la creación de subclases (diferente cuando se usan puntos de interrupción) –
@lindonfox No se puede observar confiablemente el 'fotograma 'de una vista con KVO. También debe observar su 'center',' bounds' y 'transform'. –
¿Qué tal 'viewWillAppear'? Me parece que hacerlo en 'viewDidAppear' es demasiado tarde y dará lugar a glitches visuales. – devios1