Вопрос

Я работаю над приложением iOS. В настоящее время он работает только на iOS 4, поскольку в течение нескольких случаев использую следующий метод: «UigraphicsBeginimageContextWithOptions». Этот метод доступен только в iOS 4, и для моего приложения в настоящее время вылетает / не работает на iPhone OS 3. Помимо этого метода нет причин, почему приложение не должно работать над iPhone OS 3. Как сделать проверку на Смотрите Wher или нет этот метод доступен? Я пробовал следующее без успеха:

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

}

Я только пробовал варианты, как это:

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

а также

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

Без судей Любая помощь будет оценена.

Это было полезно?

Решение

UigraphicsBeginimageContextWithOptions - функция C, так что вы не можете использовать методы объектов-C, такие как -respondsToSelector: проверить его существование.

Вы могли бы, однако, слабое звено Uikit Framework, а затем проверьте, если UigraphicsBeginimageContextWittions NULL:

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

Другие советы

У меня та же проблема. Вы можете попробовать тестировать системную версию. Кажется, это работает для меня на устройствах, которые я проверил.

Char Maidorversion = [[[Uidevice CurrentDevice] SystemVersion] HATARYATINDEX: 0]; Если (mailversion == '2' || mainversion == '3') UigraphicsBeginimageContext (...); иначе UigraphicsBeginimageContextWithtions (...);

Я знаю, что это старый вопрос, но с новыми версиями Xcode и iOS (Expery 9) любой из этих методов работают для меня.

Я всегда проверяю системную версию таким образом:

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

Я надеюсь, что это может помочь кому-либо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top