0

我正在使用UITableView. 对于每一行,我使用QuartzCore layer.shadow创建带有阴影的矩形单元格 自定义类中的

示例代码:UITableViewCell

-(void)drawRect:(CGRect)rect 
{
    UIView *bgView = [[UIView alloc] initWithFrame:self.bounds];
    bgView.backgroundColor = [UIColor whiteColor];

    bgView.layer.shadowColor = [UIColor blackColor].CGColor;
    bgView.layer.shadowOffset = CGSizeMake(0, 1);
    bgView.layer.shadowOpacity = 0.2;
    bgView.layer.shadowRadius = 1;

    self.backgroundView = bgView;
    [bgView release];
}

当我测试应用程序 scrollUITableView时,滚动性能很差!如果我去除阴影,性能很好!

我需要你的建议。为了获得最佳性能,我可以进行哪些优化?

4

2 回答 2

2

你的问题不是Objective-C,而是影子!从 iOS 3.2 开始,您可以CGPathRef为阴影定义一个,您应该构建一个仅包含视图轮廓的阴影,以减少渲染时间并提高性能。您还可以让阴影光栅化以避免一直重绘它(将图层的shouldRasterize属性设置为YES。根据您想要对图层执行的操作,这可能不是最好的选择。它也是一种内存/性能权衡,记住这一点!)。

创建所需阴影路径的最简单方法应该是通过UIBezierPath具有许多有用的类方法来构建各种形成CGPathRef对象的类,但是根据您的视图的形状,您可能不得不退回来构建自己的路径手。

于 2012-08-06T05:50:45.267 回答
0

你如何实现UITableView委托?您是否创建了UITableViewCellusing 重用,例如:


-[UITableView dequeueReusableCellWithIdentifier:]

请检查一下。

于 2012-08-06T06:11:01.713 回答