2011-08-10 4 views
8

He estado buscando por un tiempo para obtener una respuesta a esto, pero no he encontrado nada. Estoy tratando de usar CIAffineTransform, aparte de iOS 5 Beta, y me he encontrado con un problema. La documentación dice que la propiedad 'inputTransform' acepta un NSAffineTransform, pero, como puedo ver, no hay forma de instanciar uno de estos en iOS, toda la investigación que he hecho me dice que esta clase particular es para MacOS (corrígeme) si estoy equivocado).¿Cómo configura inputTransform para CIAffineTransform en iOS 5

Si ese es el caso, ¿qué valor pongo en el inputTransform?

Aquí hay un código simple para explicar lo que estoy tratando de lograr.

CIImage* result = "Some CIImage"; 


CIFilter* filter = [CIFilter filterWithName:@"CIAffineTransform"]; 
[filter setValue:result forKey:kCIInputImageKey]; 

[filter setValue:transform forKey:@"inputTransform"]; //What type/class of value do I set here if I can't use an NSAffineTransform 

result = [filter outputImage]; 

Cualquier ayuda será muy apreciada.

Respuesta

21

Encontré la solución, simplemente estaba buscando en el lugar equivocado.

En lugar de utilizar el filtro CIAffineTransform en el CIImage, CIImage realmente proporciona un método llamado:

-(CIImage*) imageByApplyingTransform:(CGAffineTransform)transform 

Este método devuelve una imagen que tiene el argumento CGAffineTransform que se le aplica.

la esperanza de que ayude a alguien :)

+0

Gracias, esto sigue siendo útil 2 años después! Solo tengo curiosidad de por qué mi filtro escupe nada cuando uso CIAffineTransform, ya sea con [NSValue valueWithBytes: & xform objCType: @encode (CGAffineTransform)] o [NSValue valueWithCGAffineTransform: xform]; – CodePlumber

+0

Esto es súper útil, pero tenga en cuenta que es iOS 8+, por lo que si tiene soporte para iOS 7 o inferior, debe utilizar la solución de @William Jockusch. –

1

por la Core Image Filter Reference.

CGAffineTransform xForm = whatever; 
[myFilter setValue:[NSValue valueWithBytes:&xForm objCType:@encode(CGAffineTransform)] forKey:@"inputTransform"];