Domanda

Sono in procinto di creare un semplice programma di disegno per l'iPhone.Al momento, toccare gli eventi aggiungi la loro posizione a un elenco che è collegato con un gruppo di chiamate cgContextAddlinetopointOPoint che vengono ridisegnate in ogni chiamata a Dreanrect.

Sto correndo in problemi di prestazioni a numeri abbastanza bassi di linee (sono trasparenti, però), quindi ho provato a disegnare tutto in un clicayer.Ora, invece di disegnare ogni linea ogni fotogramma, disegna ogni linea solo una volta e disegna il clayer sullo schermo ogni fotogramma.

        CGContextRef backgroundContext = CGLayerGetContext(pathBuffer);
        CGContextSetLineWidth(backgroundContext, 2.0);
        CGContextSetLineCap(backgroundContext, kCGLineCapButt);
        CGContextSetStrokeColorWithColor(backgroundContext, [pathColor CGColor]);

        if([[touchPoints objectAtIndex:0] continuesToNextPoint])
        {
            CGContextMoveToPoint(backgroundContext, [[touchPoints objectAtIndex:0] point].x, [[touchPoints objectAtIndex:0] point].y);
            CGContextAddLineToPoint(backgroundContext, [[touchPoints objectAtIndex:1] point].x, [[touchPoints objectAtIndex:1] point].y);
            CGContextStrokePath(backgroundContext);
        }

        //remove it from touchpoints
        [touchPoints removeObjectAtIndex:0];
    }

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextDrawLayerAtPoint(context, CGPointMake(0, 0), pathBuffer);
.

Questo, se qualcosa, è più lento di quello che stavo facendo prima.Sto facendo qualcosa di sbagliato?Sarei meglio servito a disegnare a un uiimage o qualcosa del genere?Grazie.

È stato utile?

Soluzione

Cosa dovresti fare è inserire un CALayer in una delle tue visualizzazioni, aggiornando il livello, quindi chiamare setNeedsDisplayInRect: con i limiti dell'area che è cambiata sul livello, che lo fa aggiornare.Se si tenta di aggiornare l'intero schermo, sarà lento.

Stai usando gli strumenti per capire quali parti sono lente?Raccomando di usarlo per conoscere quali parti ti stanno rallentando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top