iOS:64位的Core Animation问题还有解决方案吗?
问题描述:
我们最近将应用程序转换为完整的64位兼容性,现在整个应用程序的CABasicAnimations在64位设备(在所有设备上工作多年的动画)上都失败了。有人问到here,但没有收到任何回应。目前关于这个问题的知识是什么?我找不到很多有关它的文字。iOS:64位的Core Animation问题还有解决方案吗?
答
我不确定这是否回答您的问题,但它可能是相关的。使用UIViewAnimationOptionBeginFromCurrentState
不再打断现有的动画作为iOS的8取消动画现在
UIView
动画必须与removeAnimationForKey
明确完成。
也许如果您更详细地描述了“失败”意味着什么,并提供了演示错误行为的简短代码片段,则可能会对解决方案有不同的洞察。
答
只是在黑暗中拍摄:从32位到64位的时候去的问题的常见原因是有关size of data types such as floats, integers, longs等
动画来讲,可能是罪魁祸首的浮点值。如果你在代码中使用了float
,那么也许你运气不好。实际上,框架预计CGFloat
表示浮点数,所以编译器会进行这种隐式转换。另一方面,float
没有改变它们的大小,而CGFloat
有(从32到64位)。这可以解释你遇到的普遍问题。
该行为是非常不可预测的,动画基本上闪烁并在屏幕上出现异常。代码运行通过一个非常复杂的动画框架,所以我不能真正发布个别示例,但我会研究上述内容。不过,我会注意到,这是64位设备专有的,并且只有当arm64被添加到有效的arch时才会发生,所以我不认为上述问题。 – puzzl 2015-02-05 22:18:01