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