2011-10-07 2 views
2

최근에 iOS 5.0 SDK를 사용하도록 애플리케이션을 업데이트했습니다. 그 안에는 Alex Fajowski's OpenFlow 커버 플로우 구현을 사용하고 있습니다.iOS 5.0에서 OpenFlow가 올바르게 작동하도록하려면 어떻게해야합니까?

iOS 5.0에서 응용 프로그램을 실행할 때 OpenFlow가 이미지를 스 와이프 할 때 잘못된 변환 또는 Z 위치 변경을하고있는 것을 발견했습니다.

iOS 5.0 SDK에서 OpenFlow가 올바르게 작동하도록 할 수있는 방법이 있습니까?

+0

가 무례 transfomation의 이미지를 게시하시기 바랍니다 중 하나를 사용할 수 있습니다 :) – jrturton

+0

그래, 나도 같은 문제에 직면하고있다, 그것은 3D 효과의 이미지 플립처럼 보인다. 누구나 가지고있는 솔루션을 제공하십시오. –

+0

무례가 스 와이프에서 발생하고 매우 빠르기 때문에 스크린 샷을 만들 수 없습니다. –

답변

2

오늘 나는 마침내이 문제에 대한 해결책을 발견했습니다. 분명히, iOS 5에서는 z 위치가 더 이상 애니메이션되지 않습니다 (너무 나쁘다. 이것이 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); 

, 그것은 너희들을 도움이되기를 바랍니다.

+0

니스, 고마워! 확실히 github에 대한 수정 사항을 제출하고 문제를 마무리해야합니다 (https://github.com/thefaj/OpenFlow/issues/21). 게시자가 직접 게시 한 것 같습니다. – boliva

+0

그래, 이건 분명 개선을 제공하지만 애니메이션은 여전히 ​​사용했던 것처럼 부드럽 지 않다. – boliva

7

내가 가지고있는 것보다 개선되었으며 분명히 원활하게 작동합니다 (iOS 4에 있었던 방식). 대신 당신이 (-setUpInitialState에) 위에서 언급 한 것의 AfOpenFlowView.m에서

:

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); 

내부 -layoutCover : selectedCover :

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]; 

당신은 조건에 따라하는 것이, 아이폰 OS 4 또는 5

최상의에서 실행중인 여부를

+0

내 솔루션을 사용해 보셨나요? 작동 했나요? –

+0

그래, 효과가 있었지만 애니메이션에 '부드러움'이 부족 했어. 내가 방금 게시 한 내용을 추가하여 수정했다. – boliva

관련 문제