Verificando UIGraphicsBeginImageContextWithOptions è supportato
-
25-09-2019 - |
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.
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.