Pergunta

Estou trabalhando em um aplicativo iOS. Atualmente, ele funciona apenas no iOS 4, pois eu uso o método a seguir em várias ocasiões: "uigraphicsBeginImageContextWithOptions". Este método está disponível apenas no iOS 4 e, portanto, meu aplicativo trava atualmente/não funciona no iPhone OS 3. Além desse método, não há razão para que o aplicativo não funcione no iPhone OS 3. Como faço para fazer um cheque para Veja se este método está disponível? Eu tentei o seguinte sem sucesso:

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

}

Eu só tentei variações como esta:

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

e

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

Sem sucesso. Qualquer ajuda seria apreciada.

Foi útil?

Solução

UigraphicsBeginImageContextWithOptions é uma função C, para que você não possa usar métodos Objective-C como -respondsToSelector: para testar sua existência.

Você poderia, no entanto, elo fraco A estrutura do UIKIT e verifique se o UIGRAPHICSBEGINIMAGECONTEXTWITHOPTIONS é NULL:

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

Outras dicas

Eu tenho o mesmo problema. Você pode tentar testar a versão do sistema. Isso parece funcionar para mim nos dispositivos que testei.

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

Sei que essa é uma pergunta antiga, mas com novas versões Xcode e iOS (superior a 9), qualquer um desses métodos funciona para mim.

Eu sempre verifico a versão do sistema dessa maneira:

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

Espero que isso possa ajudar alguém.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top