我应该为阴影使用 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 刷新率。请记住,此时您还需要为
做一些边计算
- 正在从大数组中提取数据模型。
- 计算其他单元格属性(在 sub-classing
UICollectionViewLayout
的情况下)。
我的建议是使用
- 阴影路径
- 使用资产目录中的图像放置固定大小的阴影
- 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 中找到更多说明。
我想问一下 iphone 什么渲染成本更高。一个带有 CALayer 阴影的按钮或带有图像的按钮。现在我知道一个按钮不会有任何区别,但是如果我在 uitableview 中有 10k 条记录怎么办。
CALayer for shadows
我猜你指的是创建阴影的默认方式,如下所示 CALayer for shadows
layer.shadowColor =
layer.shadowOffset =
layer.shadowOpacity =
layer.shadowRadius =
以这种方式准备阴影的计算量很大,因为 GPU 需要动态计算要应用阴影的可见屏幕部分的整体颜色和不透明度。
由于您要在滚动视图中使用此阴影,因此此计算应在 17 毫秒内完成,以保持标准的 60Hz 刷新率。请记住,此时您还需要为
做一些边计算- 正在从大数组中提取数据模型。
- 计算其他单元格属性(在 sub-classing
UICollectionViewLayout
的情况下)。
我的建议是使用
- 阴影路径
- 使用资产目录中的图像放置固定大小的阴影
- 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 中找到更多说明。