سؤال

أنا أعمل على تطبيق iOS. يعمل حاليًا فقط على iOS 4 لأنني أستخدم الطريقة التالية في عدة مناسبات: "UigraphicsBeginImageContextWithOptions". هذه الطريقة متوفرة فقط في iOS 4 ، وبالتالي فإن تطبيقي يتعطل/لا يعمل حاليًا على iPhone OS انظر Wether أم لا هذه الطريقة متاحة؟ لقد جربت ما يلي بدون نجاح:

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 ، لذلك لا يمكنك استخدام أساليب Objective-C مثل -respondsToSelector: لاختبار وجودها.

يمكنك ، ومع ذلك ، رابط ضعيف إطار UIKIT ، ثم تحقق مما إذا كان uigraphicsbeginimageContextWithOptions لاغية:

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

نصائح أخرى

لدي نفس المشكلة. يمكنك محاولة اختبار إصدار النظام. يبدو أن هذا يعمل بالنسبة لي على الأجهزة التي اختبرتها.

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

أعلم أن هذا سؤال قديم ، ولكن مع إصدارات Xcode و iOS جديدة (الجزء العلوي من 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