Optymalizuj CGContextDrawRadialGradient w drawRect:

W mojej aplikacji na iPada mam UITableView, który przydziela / wstawia podklasę UIView za każdym razem, gdy wybierana jest nowa komórka. PrzesłoniłemdrawRect: w tym UIViewie do narysowania gradientu radialnego i działa on dobrze, ale wydajność cierpi - gdy komórka jest podsłuchiwana, UIView zajmuje znacznie dłużej, aby narysować gradient programowo, a nie .png dla tła. Czy jest jakiś sposób na „skrytowanie” mojegodrawRect: metoda lub gradient, który generuje, aby poprawić wydajność? Wolałbym użyćdrawRect: zamiast .png. Moja metoda wygląda tak:

- (void)drawRect:(CGRect)rect
{
     CGContextRef context = UIGraphicsGetCurrentContext();

     size_t gradLocationsNum = 2;
     CGFloat gradLocations[2] = {0.0f, 1.0f};
     CGFloat gradColors[8] = {0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.5f}; 
     CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
     CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, gradColors, gradLocations, gradLocationsNum);
     CGColorSpaceRelease(colorSpace);

     CGPoint gradCenter = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
     float gradRadius = MIN(self.bounds.size.width , self.bounds.size.height) ;

     CGContextDrawRadialGradient (context, gradient, gradCenter, 0, gradCenter, gradRadius, kCGGradientDrawsAfterEndLocation);

     CGGradientRelease(gradient);
}

Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion