XCode 6 – iOS 8: verifica programáticamente si la vista está instalada

Estoy usando tamaños de class en el generador de interfaces, definiendo layouts ligeramente diferentes para diferentes tamaños.

Una de mis vistas no está instalada para un tamaño específico. Eso funciona como se esperaba, pero ahora me gustaría progtwigr que pueda saber si esa vista está instalada o no. Ya sea que esté instalado o no, parece que la vista nunca es nula, y no puedo ver ninguna marca está instalada para comprobar.

¿Cuál es la manera correcta de hacer esto?

Esta no es una gran solución, pero aún no he encontrado una mejor:

Los docs declaran que "Todavía se crea un object de time de ejecución para una vista desinstalada. Sin embargo, la vista y cualquier restricción relacionada no se agregan a la jerarquía de vista y la vista tiene una propiedad superview de cero".

Entonces, una testing para una supervisión válida funciona como una solución, pero he descubierto que tiene que llegar bastante tarde, en viewDidAppear . Las supervistas aún son nulas en la vista viewWillAppear , por ejemplo.

Puede hacer una extensión a UIView y comprobar si la vista tiene una vista de supervisión. Si está instalado, devolverá verdadero, si no es, devolverá falso.

 extension UIView { func isInstalled() -> Bool{ return (self.superview != nil) ? true : false } } 

De Apple Docs: installation y desinstallation de vistas para una class de tamaño

Todavía se crea un object de time de ejecución para una vista desinstalada. Sin embargo, la vista y las restricciones relacionadas no se agregan a la jerarquía de vista y la vista tiene una propiedad superview de nil. Esto es diferente de estar escondido. Una vista oculta está en la jerarquía de vista junto con cualquier restricción relacionada.

Puede verificar mediante la evaluación de PossiblyUninstalledView.superView != nil . Si es cierto, entonces la class está instalada correctamente.