Domanda

Sto lavorando su un app iOS. E 'attualmente funziona solo su iOS 4 dato che io uso il seguente metodo in diverse occasioni: "UIGraphicsBeginImageContextWithOptions". Questo metodo è disponibile solo in iOS 4 e per questo la mia app attualmente si blocca / non funziona su iPhone OS 3. Oltre a questo metodo non v'è alcun motivo per cui l'applicazione non dovrebbe lavorare su iPhone OS 3. Come faccio a fare un controllo per vedi montone castrato o non questo metodo è disponibile? Ho provato quanto segue senza successo:

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

}

Ho provato solo variazioni in questo modo:

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

e

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

Senza successo. Qualsiasi aiuto sarebbe apprezzato.

È stato utile?

Soluzione

UIGraphicsBeginImageContextWithOptions è una funzione C, quindi non è possibile utilizzare i metodi Objective-C come -respondsToSelector: per testare la sua esistenza.

Si potrebbe, tuttavia, anello debole quadro UIKit, e poi verificare se UIGraphicsBeginImageContextWithOptions è NULL:

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

Altri suggerimenti

Ho lo stesso problema. Si potrebbe provare a testare la versione del sistema. Questo sembra funzionare per me su dispositivi che ho provato.

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

So che questa è una vecchia questione, ma con le nuove versioni di Xcode e iOS (superiore a 9) niente di tutto questo metodi lavoro per me.

Ho sempre controllare la versione del sistema in questo modo:

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

Spero che questo potrebbe aiutare chiunque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top