سؤال

عندما أحاول التقاط لقطة شاشة في spritekit.لقد جربت كل الطرق التي يمكنني العثور عليها عبر الإنترنت.إنهم لا يعملون.

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *gameOverScreenImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

فقط لا يعمل

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, scale);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

غير قادر على التعرف على حدود الذات والحجم.

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

المحلول

لست متأكدا ما إذا كان -drawViewHierarchyInRect:afterScreenUpdates: من المفترض أن يعمل مع SKView (أفترض ذلك)، ولكن السبب وراء عدم تجميع المثال الثاني هو أنك (1) تحاول الاتصال به و bounds على self (من المفترض أن يكون UIViewController) بدلاً من self.view و(2) لم تحدد قيمة scale.فقط قم بتغيير هذين السطرين:

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];

وكذلك المعلمة الثانية UIGraphicsBeginImageContextWithOptions- "غير شفاف" - لا ينبغي أن يكون "لا" إلا إذا كان العرض الخاص بك شفافًا، ويعد تعيين "afterScreenUpdates" على "نعم" ضروريًا فقط في بعض الظروف التي ربما لا تتضمن هذه الحالة.قد ترى أداء أفضل من خلال تغيير تلك.

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