J'ai fait un UIImage Objectif C catagory pour abriter cette fonction:catégorie Objective-C erreur « sélecteur non reconnu »
#import "UIImage+fixOrientation.h"
@implementation UIImage (fixOrientation)
- (UIImage *)fixOrientation
{
// No-op if the orientation is already correct
if (self.imageOrientation == UIImageOrientationUp) return self;
// We need to calculate the proper transformation to make the image upright.
// We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.
CGAffineTransform transform = CGAffineTransformIdentity;
switch (self.imageOrientation) {
case UIImageOrientationDown:
case UIImageOrientationDownMirrored:
transform = CGAffineTransformTranslate(transform, self.size.width, self.size.height);
transform = CGAffineTransformRotate(transform, M_PI);
break;
case UIImageOrientationLeft:
case UIImageOrientationLeftMirrored:
transform = CGAffineTransformTranslate(transform, self.size.width, 0);
transform = CGAffineTransformRotate(transform, M_PI_2);
break;
case UIImageOrientationRight:
case UIImageOrientationRightMirrored:
transform = CGAffineTransformTranslate(transform, 0, self.size.height);
transform = CGAffineTransformRotate(transform, -M_PI_2);
break;
}
switch (self.imageOrientation) {
case UIImageOrientationUpMirrored:
case UIImageOrientationDownMirrored:
transform = CGAffineTransformTranslate(transform, self.size.width, 0);
transform = CGAffineTransformScale(transform, -1, 1);
break;
case UIImageOrientationLeftMirrored:
case UIImageOrientationRightMirrored:
transform = CGAffineTransformTranslate(transform, self.size.height, 0);
transform = CGAffineTransformScale(transform, -1, 1);
break;
}
// Now we draw the underlying CGImage into a new context, applying the transform
// calculated above.
CGContextRef ctx = CGBitmapContextCreate(NULL, self.size.width, self.size.height,
CGImageGetBitsPerComponent(self.CGImage), 0,
CGImageGetColorSpace(self.CGImage),
CGImageGetBitmapInfo(self.CGImage));
CGContextConcatCTM(ctx, transform);
switch (self.imageOrientation) {
case UIImageOrientationLeft:
case UIImageOrientationLeftMirrored:
case UIImageOrientationRight:
case UIImageOrientationRightMirrored:
// Grr...
CGContextDrawImage(ctx, CGRectMake(0,0,self.size.height,self.size.width), self.CGImage);
break;
default:
CGContextDrawImage(ctx, CGRectMake(0,0,self.size.width,self.size.height), self.CGImage);
break;
}
// And now we just create a new UIImage from the drawing context
CGImageRef cgimg = CGBitmapContextCreateImage(ctx);
UIImage *img = [UIImage imageWithCGImage:cgimg];
CGContextRelease(ctx);
CGImageRelease(cgimg);
return img;
}
@end
J'ai impelmented au meilleur de ma connaissance, mais pour des raisons de l'utilisation, il continue à venir avec cette erreur:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage fixOrientation]: unrecognized selector sent to instance 0x1f0ce270'
dans mon dossier UIImage + fixOrientation.h mon code ressemble à ceci:
#import <UIKit/UIKit.h>
@interface UIImage (fixOrientation)
- (UIImage *)fixOrientation;
@end
et mon fichier UIImage + fixOrientation.m se compose du code que j'ai posté au début. J'ai regardé dans les autres indicateurs de liens dans la section de construction de la cible du projet avec quelques suggestions, mais cela n'a pas aidé! Honnêtement, je ne peux pas comprendre pourquoi il ne peut pas trouver cette fonction ...
c'est aussi que je l'ai utilisé la fonction:
NSData *imageData = UIImageJPEGRepresentation([[imageManager pickerImage] fixOrientation], 0.5);
Est-ce que quelqu'un a une idée pourquoi il pourrait être jeter moi ce message? Merci d'avance!
Avez-vous importé votre catégorie avant de tenter de l'utiliser? – Alladinian
J'ai yeh, en haut du fichier, mais il jette toujours cette erreur:/ – Ollie177
Êtes-vous sûr que le fichier '.m' de votre catégorie est ajouté à la bonne cible? – Alladinian