2012-07-29 3 views
1

회전 후 "팬"을 사용하면 왜 반대 방향으로 이동합니까?rotae가보기를 반대 방향으로 만들면 왜 "pan"을 사용합니까?

이 두 제스처는 사용되는 다른 좌표 시스템 인 것 같습니다. 회전은 회전 한 것을 사용하고, 팬은 정상적인 것을 사용합니다.

보기가 0 '또는 360'근처에서 회전하면 팬이 정상적으로 표시되고보기가 180 '로 회전하면'팬 '으로보기가 더 반대가됩니다.

감사합니다.

enter image description here

답변

3

점은 handRotate 방법 당신이보기에 회전 변형을 할당하는 것입니다. 이렇게하면 수퍼 뷰 내에서보기가 표시되는 방식이 영구 변환됩니다 (변형을 다시 수정하기 전까지). 회전 변환은보기의 기하학적 속성에 대한 다른 변경 사항에 항상 "추가"됩니다.

표시되는 동작은 Layer Geometry and Transform에서 설명한대로 앵커 포인트 사이의 상호 작용입니다. 즉, 패닝 할 때 수정중인 center 속성은보기에 대해 정의한 모든 변환을 적용한 결과입니다. 반면에 패닝 할 때 수행하려는 작업은 의 위치를 ​​수정해야 변형이 적용됩니다.

이 방법은 계층 CALayer을 사용하고보기 center 대신에 position 속성을 수정하여 코드를 다시 매핑하는 방법입니다. 좋아요 :

recognizer.view.layer.position = ... 

나는이 문제를 해결해야한다고 생각합니다.

(컴파일하려면 QuartzCore를 가져와야합니다.)

희망이 도움이됩니다.

+0

CGPoint 번역 = [recongnizer translationInView : self.view]; recongnizer.view.layer.position = CGPointMake (recongnizer.view.layer.position.x + translation.x, recongnizer.view.layer.position.y + translation.y); [recongnizer setTranslation : CGPointMake (0, 0) inView : self.view]; – heinzkuang

+0

여기 내 코드가 있습니다. 맞습니까? 그것은 전혀 다른 것을 보여줍니다 ... – heinzkuang

+0

'view.layer.anchorPoint'에 어떤 값이 있는지 확인할 수 있습니까? – sergio

관련 문제