0

CGAffineTransform 회전, 축척 등의 애니메이션을 결합하려고합니다.단일 UIView에서 CGAffineTransform 시퀀스

스케일링 및 회전과 관련된 문제점은 시퀀스를 수행 할 때 내 뷰를 축소/확대 한 다음 나중에 회전 할 때 발생합니다. 회전하는 동안보기가 원래의 눈금으로 돌아가고, 내가 지정한 새로운 눈금에 머 무르지 않습니다.

스케일, 회전, 날고, 다시 비율을 조정하고 다시 회전하려면 어떻게해야합니까?

나는 CGAffineTransformConcat()을 사용하여 2 CGAffineTransform과 같은 크기와 회전을 결합 할 수 있음을 알게되었습니다.

하지만 concat을 사용하여 동시에 실행되는 CGAffineTransform의 조합을 원하는 곳에서 달성 할 수 있습니까? 또는 CGAffineTransformConcat을 사용하지 않고도이를 수행 할 수있는 방법이 있습니까? 나는 누군가가 이것으로 나를 도울 수 있기를 바랍니다. 감사.

+1

CGAffineTransformConcat()은 시퀀스가 ​​아니라 동시에 실행된다는 의미에서 변환을 결합합니다. 순서대로 처리하려면 첫 번째 완성 처리기에서 다음 애니메이션을 시작해야합니다. –

+0

안녕하세요 라인 하르트. 내가 참조. 그러나 뷰를 축소 한 다음 회전을 마치면 회전 도중 뷰가 원래 크기로 돌아갑니다. 뷰를 스케일링 한 다음 설정 한 새 스케일을 사용하여 회전하는 방법은 무엇입니까? – cessmestreet

+0

@ ReinhardMänner 내가 원하는 것을 분명하게 말하도록 내 질문을 업데이트했습니다. 네가 나를 도울 수 있기를 바랍니다. 감사. – cessmestreet

답변

2

나는

//scale 
view.transform = CGAffineTransformMakeScale(2.0, 2.0); 

//rotate 
view.transform = CGAffineTransformMakeRotation(M_PI); 

그러나, 이것은 당신이 회전 할 때 너무 scale1.0로 다시 설정됩니다 변환 정체성 변환을 적용 ... 당신이하고있는 것은이 같은 생각합니다.

그래서 당신은

//scale 
view.transform = CGAffineTransformScale(view.transform, 2.0, 2.0); 

//rotate 
view.transform = CGAffineTransformRotate(view.transform, M_PI); 

이 현재의 변환을 소요하고 새로운 변환을 적용 ... 같은 것을 할 필요가있다.

+0

안녕하세요, @ Fogmeister, 정말 고마워요. 마지막 질문이 하나 있습니다. 두 개 이상의 CGAffineTransform 애니메이션을 결합 할 수 있습니까? 내 견해가 회전하고, 크기를 조정하고, 동시에 상승하기를 원합니다. 다른 CGAffineTransformConcat 안에 CGAffineTransformConcat을 추가 할 수 있습니까? 나는 노력했지만 작동하지 않거나 어쩌면 내가 잘못했거나 뭔가하고 있었다. – cessmestreet

+0

@ user1681701 그래, 한 번에 하나씩 변환을 구축하십시오. 원하는만큼 추가 할 수 있습니다. – Fogmeister

+0

어때요? 나는 움직이기 위해 CGAffineTransformMakeTranslation을 시도했다. 그러나 그것은 단지 사라졌다. 같은 시간에 어떻게 움직이게 할 수 있니? – cessmestreet