在文档中,Apple 声明您需要在以下情况下考虑图层的比例因子:
- 创建具有不同比例因子的附加核心动画层,并将它们合成到自己的内容中
- 直接设置核心动画层的内容属性
最后一个陈述对我来说并不完全清楚。他们还说:
直接使用 Core Animation 层来提供内容的应用程序可能需要调整其绘图代码以考虑比例因子。通常,当您在视图的 drawRect: 方法或图层代理的 drawLayer:inContext: 方法中进行绘制时,系统会自动调整图形上下文以考虑比例因子。
通常还是总是?这仅对视图的托管支持层或我作为子层添加到支持层的每一层有效?因为他们还说:
如果您的应用程序创建没有关联视图的图层,则每个新图层对象的比例因子最初设置为 1.0。如果您不更改该比例因子,并且随后在高分辨率屏幕上绘制图层,则图层的内容将自动缩放以补偿比例因子的差异。如果您不希望内容被缩放,您可以将图层的比例因子更改为 2.0,但如果您在不提供高分辨率内容的情况下这样做,则现有内容可能看起来比您预期的要小。要解决该问题,您需要为图层提供更高分辨率的内容。
我很难想象没有视图的图层,我可以想象图层的层次结构,但是一旦我想显示它们,我应该将其添加为视图支持层的子层次结构,或者确实存在使用它们的其他方法(比如在上下文中创建和渲染)?
Core Animation 的合成引擎会查看每个图层的 contentsScale 属性,以确定合成期间是否需要缩放该图层的内容。如果您的应用程序创建没有关联视图的图层,则每个新图层对象的比例因子最初设置为 1.0。如果您不更改该比例因子,并且随后在高分辨率屏幕上绘制图层,则图层的内容将自动缩放以补偿比例因子的差异。如果您不希望内容被缩放,您可以将图层的比例因子更改为 2.0,但如果您在不提供高分辨率内容的情况下这样做,则现有内容可能看起来比您预期的要小。要解决该问题,您需要为图层提供更高分辨率的内容。
这实际上是什么意思?当我做类似的事情时,layer.contents = (id)image.CGImage
我需要设置 contentsScale。
当我的图层绘制调用委托方法的内容 drawLayer:inContext:
并且该图层不是视图的支持层时,我是否还需要设置它?