ios - Dónde establecer traduceAutoresizingMaskIntoConstraints en Xcode 4.5
ios6 xcode4.5 (4)
Necesito establecer translatesAutoresizingMaskIntoConstraints
a NO
. De manera predeterminada, está establecido en YES
(para ayudar con la mayoría de las aplicaciones que están en transición desde los puntales y muelles al nuevo diseño automático).
¿Hay algún lugar en Xcode donde se pueda cambiar el valor predeterminado de YES
a NO
?
¿O tengo que configurarlo manualmente para cada vista?
Cuando tiene que cambiar el tamaño o la posición de su subvista. Use (BOOL)translatesAutoresizingMaskIntoConstraints
métodoAutoresizingMaskIntoConstraints antes de establecer el marco de su subvista.
[self.benchmarkButton removeFromSuperview];
[self.benchmarkButton setTranslatesAutoresizingMaskIntoConstraints:YES];
[self.benchmarkButton setFrame:CGRectMake(20, self.benchmarkButton.frame.origin.y+40, 260, 30)];
[self.benchmarksView addSubview:self.benchmarkButton];
Es por eso que su subvista no luchará contra las restricciones ya que está predeterminada (AutoLayout) en Xcode 4.3 y posterior. Gracias
De acuerdo con la documentación, esta propiedad se establece automáticamente en NO
si la vista se agrega a través de Interface Builder.
Esta es una gran pregunta, y una que he tratado de encontrar una respuesta para mí. Lamentablemente, parece que no hay una "solución rápida". Actualmente, Apple considera Opt-in de diseño basado en Restricción, incluso nombrando una sección de la Referencia de Clase UIView
:
Optar por el diseño basado en restricciones
Pero ese Opt-in no es global. Supongo que esto se debe a que no todo se ve bien si solo se convierten Springs & Struts en Restricciones. Algunos elementos de la interfaz de usuario se rompen, o obtendría una tonelada de errores de restricciones insatisfactorias.
Puedo pensar en una posible solución: no la he probado yo mismo, pero podrías hacer una categoría en UIView
que establezca todos los objetos UIView
para que devuelvan NO
para - (BOOL)translatesAutoresizingMaskIntoConstraints
UIView
en las UIView
. Si bien no sé lo que esto podría romperse, se establecería globalmente translatesAutoresizingMaskIntoConstraints
a NO
.
¡Aquí hay una buena introducción a las categorías si desea obtener más información sobre ellas !
Llegué tarde a esta pregunta, pero la opción mencionada aún falta en Xcode 5 y 6, por lo que la pregunta sigue siendo significativa.
En realidad, siempre podemos establecer un valor para cualquier propiedad de una vista / control / objeto agregando un Atributo de tiempo de ejecución definido por el usuario en Storyboard (Interface Builder) como la siguiente captura de pantalla.
Y también funciona para traduceAtlasizing At MasConstraints . Entonces la pregunta podría ser resuelta.