对于我的 tableview,我已经完成了一个自定义背景视图,我在我的项目的每个 tableView 上调用 viewDidLoad:
- (void)viewDidLoad{
[super viewDidLoad];
//other unrelated sutff
self.tableView.backgroundView=[[BlueStyleBackground alloc]init];
}
我的理解是,做石英 2D 的东西是性能方面的最佳选择。然而,这个背景视图需要 0.45 秒(平均)来绘制。这使得 tableViews 之间的所有导航有点慢,不多但足以注意到它。
背景视图是具有重叠图案的渐变。我发现渐变在 0.12 秒内绘制,因此瓶颈似乎是图案绘制。令我惊讶的是,在我看来,画起来似乎并不复杂,它只是一条带有阴影的水平线。
以下是模式的调用方式(在 recDraw 中):
static const CGPatternCallbacks callbacks = { 0, &MyDrawColoredPattern2, NULL };
CGContextSaveGState(context);
CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);
CGContextSetFillColorSpace(context, patternSpace);
CGColorSpaceRelease(patternSpace);
CGPatternRef pattern = CGPatternCreate(NULL,
rect,//superficie que ha de cobrir CGRectMake(0, 0,self.bounds.size.width,8),
CGAffineTransformIdentity,
self.bounds.size.width, // espai entre patrons (X)
2, // espai entre patrons (Y)
kCGPatternTilingConstantSpacing,
true,
&callbacks);
这是模式代码:
void MyDrawColoredPattern2 (void *info, CGContextRef context) {
UIColor* __autoreleasing blauClar = [UIColor colorWithRed: 0.65 green: 0.65 blue: 0.65 alpha: 1];
UIColor* __autoreleasing blauFosc = [UIColor colorWithRed: 0.106 green: 0.345 blue:0.486 alpha:1];
CGColorRef dotColor = blauFosc.CGColor;
CGColorRef shadowColor = blauClar.CGColor;
CGContextSetFillColorWithColor(context, dotColor);
CGContextSetShadowWithColor(context, CGSizeMake(0, 1), 5, shadowColor);
CGContextFillRect(context, CGRectMake(0, 0, 480, 1));
}
以前我做了一个在 24+24 正方形内绘制两个六边形的图案。它看起来比上面的代码更复杂,但绘制只需要 0.15 秒。
我在这里做错了吗?我对石英绘图的了解并不是那么大,我将不胜感激。提前致谢!