Question

Je travaille sur une application iOS. Il ne fonctionne actuellement que sur iOS 4 depuis que j'utilise la méthode suivante à plusieurs reprises: « UIGraphicsBeginImageContextWithOptions ». Cette méthode est uniquement disponible dans iOS 4 et celui-ci se bloque mon application actuellement / ne fonctionne pas sur iPhone OS 3. En dehors de cette méthode, il n'y a aucune raison pour laquelle l'application ne devrait pas fonctionner sur l'iPhone OS 3. Comment puis-je faire un chèque voir si oui ou non cette méthode est disponible? Je l'ai essayé ce qui suit sans succès:

if([self respondsToSelector:@selector(UIGraphicsBeginImageContextWithOptions)]) {
    UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0.0); // this will crop
}
else 
{
    UIGraphicsBeginImageContext(targetSize);

}

Je n'ai essayé variations comme ceci:

if([self respondsToSelector:@selector(UIGraphicsBeginImageContextWithOptions:size:opaque:scale:)])

et

if([self respondsToSelector:@selector(UIGraphicsBeginImageContextWithOptions:)])

Sans succès. Toute aide serait appréciée.

Était-ce utile?

La solution

UIGraphicsBeginImageContextWithOptions est une fonction C, de sorte que vous ne pouvez pas utiliser des méthodes Objective-C comme -respondsToSelector: pour tester son existence.

Vous pouvez, cependant, maillon faible le cadre UIKit, puis vérifier si UIGraphicsBeginImageContextWithOptions est NULL:

if (UIGraphicsBeginImageContextWithOptions != NULL) {
   UIGraphicsBeginImageContextWithOptions(...);
} else {
   UIGraphicsBeginImageContext(...);
}

Autres conseils

J'ai le même problème. Vous pouvez essayer de tester la version du système. Cela semble fonctionner pour moi sur les appareils que j'ai testé.

char majorVersion = [[[UIDevice currentDevice] systemVersion] characterAtIndex: 0];
if (majorVersion == '2' || majorVersion == '3')
     UIGraphicsBeginImageContext(...);
else
     UIGraphicsBeginImageContextWithOptions(...);

Je sais que c'est une question ancienne, mais avec de nouvelles versions Xcode et iOS (supérieure à 9) une de ces méthodes de travail pour moi.

Je vérifie toujours la version du système de cette façon:

NSString *sysver = [[UIDevice currentDevice] systemVersion];
NSArray *versionNums = [sysver componentsSeparatedByString:@"."];
int majorVersion = [versionNums[0] intValue];
if (majorVersion > 3){
    UIGraphicsBeginImageContextWithOptions(...);
}
else{
    UIGraphicsBeginImageContext(...);
}

J'espère que cela pourrait aider quelqu'un.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top