我正在使用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];
}


当我测试应用程序时,滚动UITableView,滚动性能不好!如果我去除阴影,性能会很好!
我需要你的建议。为了获得最佳性能,我可以进行哪些优化?

最佳答案

您的问题不是Objective-C,而是阴影!从iOS 3.2开始,您可以为阴影定义CGPathRef,因此应构建仅包含视图轮廓的阴影,以减少渲染时间并提高性能。您还可以对阴影进行栅格化处理,以避免始终重绘阴影(将图层的shouldRasterize属性设置为YES。根据您要对图层执行的操作,这可能不是最好的选择。)这也是内存/性能之间的折衷,请记住这一点!)。

创建所需阴影路径的最简单方法是通过UIBezierPath类,该类具有许多有用的类方法来构建各种形式的CGPathRef对象,但是根据视图的形状,您可能必须后退手工打造自己的道路。

10-02 18:13