سؤال

لدي سلسلة من الصور اللازمة لعرضها في وقت قصير (تسلسل PNG). هناك 31 بابوا الحمضيات في المجموع، كل حجم ملف حوالي 45 كيلو بايت. لقد قمت بالفعل بتحميلها مع الرموز التالية:

imgArray = [[NSMutableArray alloc] init];
for(int i = 0; i <= 30; i++) {
    NSString * filename = [NSString stringWithFormat:@"img_000%.2d.png", i];
    UIImage *temp = [UIImage imageNamed:filename];
    [imgArray addObject:temp];
    [temp release];
    temp = nil;
} 

يمكنني استخدام الرموز التالية لعرض الصور:

CGImageRef image = [(UIImage *)[imgArray objectAtIndex:imgFrame] CGImage];
imgLayer.contents = (id)image;
if(imgFrame < 29) {
    imgFrame++;
} else {
    imgFrame = 0;
    imgLayer.hidden = TRUE;
    [imgTimer invalidate];
}

حيث imglayer هو CALayer. وبعد (IMGTIMER هو تكرار مؤقت مع 0.03s الفاصل الزمني)

لكنني وجدت أنه عندما أتصل بالصور، فهو laggy جدا في المرة الأولى. باستثناء المظهر الأول، لا يوجد لديه مشكلة أخرى.

هل يرتبط بصور التحميل المسبق؟ أم هي صورتي كبيرة جدا في حجم الملف؟

هل كانت مفيدة؟

المحلول

من الصعب معرفة سبب تأخراتك دون تنميط البيانات. ولكن هنا خدعة قد تساعد: انضم إلى جميع صورك في ملف كبير واحد. حاول أن تجعلها مستطيلة (ربما 6 × 6 في قضيتك أو 4 * 8). ثم قم بتحميل هذا الملف الفردي ومحصول كل صورة للعرض (أي إنشاء صورة للعرض بحجم البلاط ونسخ بلاط واحد من الصورة الكبيرة بعد الآخر في صورة العرض).

نصائح أخرى

يتم تحميل الصور عند استخدامها وعرضها. إذا كنت تستخدم وقت التعريف الخاص بالوقت في الأدوات، فستكون التأخير الذي تواجهه. إذا قمت بذلك ثم قم بتكبير هذا التأخير وإلقاء نظرة على ما يسبب ذلك، فسترى عادة أن "CopyImageBlockSetpng" هي الوظيفة التي تستغرق الوقت، قبل "تضخم".

ما يجب أن تجد طريقة للقيام به هو إنشاء صورك وقوة تحميلها قبل أن تحتاج إليها. هذه قصة أخرى على ما يبدو.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top