سؤال

أنا قادر على إنشاء uiimage من طبقة الرسوم المتحركة الأساسية باستخدام التعليمات البرمجية التالية:

- (UIImage*)contentsImage;
{
   UIGraphicsBeginImageContext([self bounds].size);
   [self renderInContext:UIGraphicsGetCurrentContext()];
   UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();

   return image;
}

هذا الرمز في فئة Calayer المشتقة. القضية التي أقوم بها هي أن لدي اثنين من الرسوم الجاهزة التي هي طبقات أطفال من طبقة الطبقة التي لا يتم تقديمها إلى الصورة الناتجة. إذا أضفت Calayers القياسية كأطفال يصبحونا جيدا. يقول مستندات أبل:

يجعل جهاز الاستقبال وطبوع فرعي في السياق المحدد.

يقول أيضا أنه كان متاحا منذ iPhone OS 2.0. أتساءل عما إذا كان هناك شيء أفتقده أو إذا كان يجب علي تقديم رادار.

أي أفكار ما قد يحتفظ بأشخاص Cashapelayers من التعادل إلى الصورة؟

شكرا.

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

المحلول

يستدعي آلات Calayer Renderincontext لإنشاء خاصية محتويات Bitmpapped. ولكن في Cashapelayer، لا يتم تقديم خاصية المسار في الواقع إلى محتوياتها كما رأينا هذه المذكرة في الرأس:

يتم تصنيف الشكل ككل بين محتويات الطبقة وهروبها الأول.

إنه يعني أن Renderincontext لن يجعل مسار Cashapelayer في سياقك. لم أحاول في الواقع عن نفسي.

نصائح أخرى

لا أعرف ما إذا كانت ذات صلة بك ولكن هناك ملاحظة في وثائق Calayer ل Renderincontext تقول:

** هام **: لا يدعم تطبيق Mac OS X V10.5 من هذه الطريقة نموذج تكوين الرسوم المتحركة الأساسية بأكمله. لا يتم تقديم طبقات QCCompositionLayer، Caopengllayer، وطبقات Qtmovielayer. بالإضافة إلى ذلك، لا يتم تقديم الطبقات التي تستخدم تحويلات ثلاثية الأبعاد، ولا توجد طبقات تحدد الخيوط الخيوط أو المرشحات أو المركب في الفيلتر أو قيم قناع. قد تضيف الإصدارات المستقبلية من Mac OS X الدعم لتقديم هذه الطبقات والخصائص.

على أي حال، ركضت مشكلة مماثلة عند استخدام وظيفة ورشة Uiview بالتزامن مع الرسم في سياق الصورة. لن يقوم UIView الشائع الذي يحتوي على المفوضات الفرعية المفتوئة برصيده الفرعيون إذا اتصلت بالشرق (مما يجعل من المنطقي الآن منذ أن تقول في الوثائق إذا اتصلت بالشرق المسؤولية، فأنت مسؤول عن ملء تلك المنطقة بأكملها بغض النظر عن تطبيقات السوبر والشرعية). لقد قمت بحل مشكلتي من خلال ما يسمى بالسرقة الفرعية فقط، ويمر لهم إطارات خاصة بهم.

لذلك أود أن أقترح ربما تبتعد عن Renderincontext واستخدام Drawincontext من كاليير بدلا من ذلك؟ ستحتاج إلى تجاوز الطريقة لأنها لا تفعل أي شيء افتراضيا. ستحتاج الفئات الفرعية الخاصة بك أيضا إلى نقل السياقات إلى إطاراتها المناسبة. أيضا أن تكون آمنة قد ترغب في التحقق من أن أي من التعليمات البرمجية التي تضيفها تؤثر على التقديم العادي لهذه الطبقات.

قدمت رادارا على هذا. لا أستطيع أن أرى أي سبب في المستندات أنه لا ينبغي أن يعمل. سأعود هنا إذا / عندما يرد Apple على الرادار.

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