Dónde establecer translatesAutoresizingMaskIntoConstraints en Xcode 4.5

Necesito establecer translatesAutoresizingMaskIntoConstraints a NO . Por defecto, se establece en YES (para ayudar con la mayoría de las aplicaciones que están pasando de puntales y resortes al nuevo layout automático).

¿Hay algún lugar en Xcode donde el valor pnetworkingeterminado se puede cambiar de YES a NO ?

¿O tengo que configurarlo manualmente para cada vista?

Esta es una gran pregunta, y he intentado encontrar una respuesta para mí mismo. Lamentablemente, parece que no hay una "solución rápida". Actualmente, Apple considera el layout basado en restricciones Opt-in, incluso nombrar una sección de la Referencia de class de UIView :

Optar por el layout basado en restricciones

Pero ese opt-in no es global. Supongo que esto se debe a que no todo se ve bien si solo convierte Springs & Struts en Constraints. Algunos elementos de interfaz de usuario se rompen, o obtendrás 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 UIView que todos los objects de UIView regresen NO para - (BOOL)translatesAutoresizingMaskIntoConstraints UIView . Si bien no sé qué es lo que se rompería, establecería globalmente translatesAutoresizingMaskIntoConstraints a NO .

¡Aquí hay una buena introducción a las categorías si desea get 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 / object mediante la adición de un atributo de time de ejecución definido por el usuario en Storyboard (Interface Builder) como la siguiente captura de pantalla.

Y también funciona para traduce autorizar MaskIntoConstraints . Entonces la pregunta podría ser resuelta.

introduzca la descripción de la imagen aquí

Cuando tenga que cambiar el tamaño o la position de su subvista. Use (BOOL)translatesAutoresizingMaskIntoConstraints método Authorizing Mask Into Constraints 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]; 

Esa es la forma en que su subvista no luchará contra las restricciones, ya que es el valor pnetworkingeterminado (AutoLayout) en Xcode 4.3 y posterior. Gracias

De acuerdo con la documentation, esta propiedad se establece automáticamente en NO si la vista se agrega a través de Interface Builder.

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instp/UIView/translatesAutoresizingMaskIntoConstraints