|
|
1
15
如果核心动画必须为每一个动画帧调用代码,它将永远不会像现在这样快,并且自定义属性的动画一直是Mac上CA长期要求的功能和常见问题解答。
使用
所以唯一的方法是使用
|
|
|
2
6
|
|
|
3
4
在不同的背景下,我遇到了类似的问题,我偶然发现了这条线索,发现了邓肯关于在nstimer中设置框架的建议。我实现了这个代码以实现相同的目标:
我发现设置帧和计时器完成操作需要很长时间。它可能取决于使用这种方法调用-setframe时视图层次结构的深度。可能这就是为什么视图首先被重新调整大小,然后在sdk中被动画化到原点的原因。或者,在我的代码中,计时器机制是否存在一些问题,导致性能受到阻碍? 它可以工作,但速度很慢,可能是因为我的视图层次太深了。 |
|
|
4
2
正如Duncan所指出的,核心动画不会在每帧调整大小时重新绘制uiview层的内容。你需要自己用计时器来完成。 Omni的员工发布了一个很好的例子,说明如何根据您自己的自定义属性来制作动画,这些属性可能适用于您的案例。这个例子,连同它如何工作的解释,可以找到 here . |
|
|
5
1
如果它不是一个大的动画或性能不是动画持续时间的问题,您可以使用cadisplayLink。例如,它可以平滑自定义uiview绘图uibezierPaths缩放的动画。下面是一个示例代码,您可以根据自己的图像进行调整。 自定义视图的ivars包含作为caDisplayLink的DisplayLink,以及两个cDirect:ToFrame和FromFrame,以及Duration和StartTime。
请注意,我没有测试它的性能,但它工作得很顺利。 |
|
|
6
1
我在尝试在带有边框的uiview上设置大小更改动画时偶然发现了这个问题。我希望其他同样来到这里的人也能从这个答案中获益。最初我创建了一个自定义的uiview子类,并重写drawrect方法,如下所示:
这导致了与其他人提到的动画结合时出现缩放问题。边界的顶部和底部会变得太厚或太薄,并且看起来有比例。当切换到慢速动画时,这种效果很容易被注意到。 解决方案是放弃自定义子类,而是使用以下方法:
这解决了动画期间在uiview上缩放边框的问题。 |