我最近更新了我的应用程序以使用iOS 5.0 SDK。在其中,我正在使用Alex Fajowski's OpenFlow封面流程实现。
我发现当我在iOS 5.0上运行应用程序时,当我浏览图像时,OpenFlow正在进行不正确的转换或Z重新定位。
我能做些什么来让OpenFlow在iOS 5.0 SDK上正常工作吗?
答案 0 :(得分:7)
我对你所拥有的东西进行了改进,它确实使它顺利运行(以前的方式在iOS 4中)。
在AfOpenFlowView.m中,而不是您在上面所述的内容(在-setUpInitialState中):
leftTransform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, SIDE_COVER_ZPOSITION / 2.0);
leftTransform = CATransform3DRotate(leftTransform, SIDE_COVER_ANGLE, 0.0f, 1.0f, 0.0f);
rightTransform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, SIDE_COVER_ZPOSITION / 2.0);
rightTransform = CATransform3DRotate(rightTransform, SIDE_COVER_ANGLE, 0.0f, -1.0f, 0.0f);
Inside -layoutCover:selectedCover:animated,放置以下代码:
CGFloat newZPosition = SIDE_COVER_ZPOSITION / 2.0;
...
CABasicAnimation *zPositionAnimation = [CABasicAnimation animationWithKeyPath:@"zPosition"];
[zPositionAnimation setToValue:[NSNumber numberWithFloat:newZPosition]];
[zPositionAnimation setDuration:(animated ? .3 : 0.0)];
[zPositionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[zPositionAnimation setRemovedOnCompletion:NO];
[zPositionAnimation setFillMode:kCAFillModeForwards];
现在,而不是:
aCover.layer.zPosition = newZPosition;
将其替换为:
[aCover.layer addAnimation:zPositionAnimation forKey:nil];
您可以有条件地启用,具体取决于它是在iOS 4还是5上运行。
最佳,
答案 1 :(得分:2)
今天,我终于找到了解决这个问题的方法。显然,在iOS 5中,zPosition不再是动画(太糟糕了,因为文档确实这么说)。这就是为什么,通过将正确的转换包含到CATransform3D中,可以修复这个错误。
早些时候:
leftTransform = CATransform3DIdentity;
leftTransform = CATransform3DRotate(leftTransform, SIDE_COVER_ANGLE, 0.0f, 1.0f, 0.0f);
rightTransform = CATransform3DIdentity;
rightTransform = CATransform3DRotate(rightTransform, SIDE_COVER_ANGLE, 0.0f, -1.0f, 0.0f);
现在看起来像这样:
leftTransform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, SIDE_COVER_ZPOSITION);
leftTransform = CATransform3DRotate(leftTransform, SIDE_COVER_ANGLE, 0.0f, 1.0f, 0.0f);
rightTransform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, SIDE_COVER_ZPOSITION);
rightTransform = CATransform3DRotate(rightTransform, SIDE_COVER_ANGLE, 0.0f, -1.0f, 0.0f);
希望它可以帮助你们,因为它确实帮助了我。