我正在使用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
对象,但是根据视图的形状,您可能必须后退手工打造自己的道路。