Tipo dynamic y simulador de iOS: ¿Cómo puedo configurar el valor?

Quiero escribir mis testings de interfaz de usuario para que prueben los siete estados de tipo dynamic, desde el más pequeño hasta el más grande. ¿Cómo debería hacer esto?

¿Puedo establecer una variable de entorno para el simulador en mi Esquema y luego hacer diferentes esquemas?

¿O puedo establecer la variable de tipo dynamic de forma progtwigda en mi testing?

Prefiero no hacer un DynamicTypeController y luego hacer que diga de qué tipo es, porque me arriesgo a olvidarme de usar esto para algunos elementos, y luego no hacer que el comportamiento se pruebe correctamente.

Aclamaciones

Nik

Pido disculpas por la incompletitud de esta respuesta, pero es demasiado larga para un comentario y no habría ningún formatting de código.

La respuesta corta es que esto no es compatible: https://forums.developer.apple.com/thread/21503 , pero probablemente amerite un radar.

La respuesta más larga es que podrías hackear algo juntos. La configuration para el tipo dynamic en el simulador está disponible en su sistema de files en: ~/Library/Developer/CoreSimulator/Devices/<device identifier>/data/Library/Preferences/com.apple.UIKit.plist . Puede get mediante progtwigción la ruta al sistema de files del simulador desde el interior de un XCTest utilizando:

  let environment = NSProcessInfo.processInfo().environment if let resourcesDir = environment[ "SIMULATOR_SHARED_RESOURCES_DIRECTORY" ] { print( "-- Simulator Shanetworking Resources Directory: \(resourcesDir)" ) let dictionary = NSMutableDictionary( contentsOfFile: "\(resourcesDir)/data/Library/Preferences/com.apple.UIKit.plist" )! print( "Dictionary: \(dictionary)" ) } 

Sin embargo, la testing está aislada del directory del simulador, por lo que no puede abrir ni modificar las preferences. Ese fragment de código falla al intentar desenvolver el dictionary. También nunca lo intenté con Xcode Server.

Podría modificar el plist utilizando un script de shell como el siguiente: plutil -replace UIPrefernetworkingContentSizeCategoryName -string UICTContentSizeCategoryAccessibilityXXXL com.apple.UIKit.plist . El simulador debe reiniciarse después de modificar el file para que no pueda volar en un entorno de compilation compartido. Desafortunadamente, la ruta al sistema de files del simulador no está disponible para los scripts de acción previa en Xcode. Podría modificar la configuration de todos los simuladores, pero nuevamente, podría no volar en un entorno de compilation compartido.

Al final del día, podría ser mejor crear su DynamicTypeController y agregar algún process para asegurarse de que nadie usa UIApplication.prefernetworkingContentSizeCategory .

Todo esto se probó usando Xcode 7.1 (7B91b).