我应该为阴影使用 CAlayer 还是应该使用图像

should i use CAlayer for shadows or should i use images

我想问一下 iphone 什么渲染成本更高。一个带有 CALayer 阴影的按钮或带有图像的按钮。现在我知道一个按钮不会有任何区别,但是如果我在 uitableview 中有 10k 条记录怎么办。

CALayer for shadows

我猜你指的是创建阴影的默认方式,如下所示 CALayer for shadows

layer.shadowColor = 
layer.shadowOffset =
layer.shadowOpacity =
layer.shadowRadius =   

以这种方式准备阴影的计算量很大,因为 GPU 需要动态计算要应用阴影的可见屏幕部分的整体颜色和不透明度。

由于您要在滚动视图中使用此阴影,因此此计算应在 17 毫秒内完成,以保持标准的 60Hz 刷新率。请记住,此时您还需要为

做一些边计算
  1. 正在从大数组中提取数据模型。
  2. 计算其他单元格属性(在 sub-classing UICollectionViewLayout 的情况下)。

我的建议是使用

  1. 阴影路径
  2. 使用资产目录中的图像放置固定大小的阴影
  3. pre-render 将您的阴影转换为图像并将其缓存以备后用。

否则 Debug-View 可能会向您显示如下警告

Optimization Opportunities: The layer is using dynamic shadows which are expensive to render. If possible try setting shadowPath, or pre-rendering the shadow into an image and putting it under the layer.

您将从 this tutorial 中找到更多说明。