Frage

Ich arbeite auf einem iOS-App. Es funktioniert derzeit nur auf iOS 4, da ich die folgende Methode mehrfach verwenden: „UIGraphicsBeginImageContextWithOptions“. Diese Methode in iOS nur verfügbar ist, 4 und dafür meine App stürzt zur Zeit / nicht funktioniert auf iPhone OS 3. Neben dieser Methode gibt es keinen Grund, warum die App sollte nicht Arbeit auf dem iPhone OS 3. Wie kann ich einen Scheck an sehen, ob oder nicht diese Methode zur Verfügung steht? Ich habe die folgenden ohne Erfolg versucht:

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

}

Ich habe nur versucht, Variationen wie folgt aus:

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

und

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

Ohne Erfolg. Jede mögliche Hilfe würde geschätzt.

War es hilfreich?

Lösung

UIGraphicsBeginImageContextWithOptions ist eine C-Funktion, so dass Sie nicht Objective-C-Methoden wie -respondsToSelector: verwenden können, um seine Existenz zu testen.

Sie könnten jedoch schwaches Glied den UIKit Rahmen, und dann prüfen, ob UIGraphicsBeginImageContextWithOptions NULL ist:

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

Andere Tipps

Ich habe das gleiche Problem. Sie könnten versuchen, die Systemversion zu testen. Dies scheint für mich auf den Geräten zu arbeiten, die ich getestet.

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

Ich weiß, das ist eine alte Frage, aber mit neuen Xcode und iOS-Versionen (oberer als 9) jede dieser Methoden Arbeit für mich.

ich die Systemversion auf diese Weise immer überprüfen:

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

Ich hoffe, das mir jemand helfen könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top