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!