Pregunta

Estoy trabajando en una aplicación para iOS. En la actualidad sólo funciona en iOS 4 ya que utilizar el siguiente método en varias ocasiones: "UIGraphicsBeginImageContextWithOptions". Este método sólo está disponible en IOS 4 y por lo tanto mi aplicación se bloquea actualmente / no funciona en el iPhone OS 3. Aparte de este método no hay ninguna razón por la cual la aplicación no debe trabajar en el iPhone OS 3. ¿Cómo hacer una verificación de ver tiempo o no este método está disponible? He intentado sin éxito la siguiente:

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

}

Sólo he intentado variaciones de esta manera:

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

y

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

Sin éxito. Cualquier ayuda sería muy apreciada.

¿Fue útil?

Solución

UIGraphicsBeginImageContextWithOptions es una función de C, por lo que no puede utilizar los métodos de Objective-C como -respondsToSelector: para probar su existencia.

Usted puede, sin embargo, eslabón débil el marco UIKit, y luego comprobar si UIGraphicsBeginImageContextWithOptions es nulo:

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

Otros consejos

Tengo el mismo problema. Usted podría intentar probar la versión del sistema. Esto parece funcionar para mí en los dispositivos que probé.

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

Sé que esto es una cuestión de edad, pero con las nuevas versiones de Xcode y iOS (9) superior que cualquiera de los métodos de este trabajo para mí.

Siempre que el registro de la versión del sistema de esta manera:

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

Espero que esto podría ayudar a nadie.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top