在我的iPad應用程序,我有一個UITableView是分配/ inits每次UIView子類新的細胞被選中。我重寫drawRect:
在此UIView的繪製徑向漸變,它工作正常,但性能是痛苦 - 當細胞被竊聽,UIView的需要相當長以編程方式繪製一個漸變,而不是使用巴紐爲背景。有沒有什麼辦法「緩存」我drawRect:
方法或它生成的提高性能的梯度?我寧願使用drawRect:
而不是.png。我的方法是這樣的:優化CGContextDrawRadialGradient中的drawRect:
- (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);
}
謝謝!
有對Objective-C的沒有高亮提示,據我可以告訴。普通C會工作嗎? – 2012-11-18 06:06:03
我已經看到了我的方式的錯誤,並會悔改:)(感謝您的編輯) – 2015-11-28 04:49:15