Проверка, если UigraphicsBeginimageContextWittions поддерживается
-
25-09-2019 - |
Вопрос
Я работаю над приложением 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(...);
}
Я надеюсь, что это может помочь кому-либо.