سؤال

وكيف يمكن استخدام كل من هذه في نفس UIView بشكل صحيح؟

وأنا واحد مخصص subclassed CALayer الذي أود أن ألفت نمط داخل drawInContext

ولدي آخر فيه أنا وضعت تراكب PNG صورة كما محتوياته.

ولدي الثلث الذي هو مجرد الخلفية.

وكيف يمكنني تراكب كل 3 من هذه العناصر؟

[self.layer addSublayer:bottomLayer];    // this line is the problem

[squaresLayer drawInContext:viewContext];
[self.layer addSublayer:imgLayer];

و2 آخرين بأنفسهم رسم بشكل صحيح إذا كنت تفعل لهم في هذا النظام. بغض النظر عن مكان وأنا أحاول ووضع bottomLayer، فإنه دائما يمنع squaresLayer من الرسم. السبب أحتاج 3 طبقات هو أنني تنوي تحريك الألوان في طبقات خلفية والعرف. الطبقة العليا هي مجرد تراكب رسومية.

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

المحلول

وقد لصق وكذلك التعليمات البرمجية في في حالة أي شخص يحاول تحريك CALayers مكدسة التي لديها الخاصة الروتينية التعادل الداخلي من

- (void)drawRect:(CGRect)rect {

    [imgLayer removeFromSuperlayer];

    CGFloat w = [self.blockViewDelegate w];
    CGFloat h = [self.blockViewDelegate h];

    CGFloat wb = w/4;
    CGFloat hb = h/4;

    CGContextRef viewContext = UIGraphicsGetCurrentContext();

    // Layers

    [bottomLayer sizes:wb :hb :1];
    bottomLayer.frame = CGRectMake(0, 0, w, h);
    bottomLayer.opaque = NO;

    [topLayer sizes:wb :hb :0];
    topLayer.frame = CGRectMake(0, 0, w, h);
    topLayer.opaque = NO;

    // Overlay

    imgLayer.frame = CGRectMake(0, 0, w, h);
    imgLayer.opaque = NO;
    imgLayer.opacity = 1.0f;

    UIImage *overlay = [self.blockViewDelegate image];
    CGImageRef img = overlay.CGImage;
    imgLayer.contents = (id)img;

    // Add layers

    [bottomLayer drawInContext:viewContext];
    [topLayer drawInContext:viewContext];
    [self.layer addSublayer:imgLayer];

}

وblockViewDelegate هو مكاني تخزين العرض والطول، ومعلومات الصورة، هو وحدة تحكم لهذا UIView.

وtopLayer وbottomLayer هي من فئة فرعية UIView العرف الذي رسم بعض الأشكال في الرأي مع المعلومات لون متغير. في وقت لاحق في بلدي الرسوم المتحركة أنا فقط تشغيل "setNeedsDisplay" مرارا وتكرارا مع جهاز توقيت وهذا يكرر الروتينية، وطبقات إعادة رسم باستخدام المعلمات المحدثة.

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