4

나는CGAffineTransformScale 장치 회전 이후에 수정

를 사용하여 내가 장치를 회전하지 않으면 내가 원래이 다시 되돌릴 수 있습니다

originalTransform = self.appContainer.transform; 
self.appContainer.transform = CGAffineTransformMakeScale(.8, .8); 

Original Rotation

에 변환을 수행하고 전망을

self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1); 

불행히도 장치를 회전하면 뷰의 변형 행렬이 뷰 회전에 의해 수정되고 원래의 눈금이 끊어집니다. 회전 후 저울을 실행 취소하면 UIView이 원래 크기로 되돌아 가지 않습니다.

After Original Scale

After Rotation

은 내가 원래 변환 행렬과 새 사이의 계산을해야하지만이 작업을 수행하는 방법을 확실임을 확신합니다. 나는이 작품을 만들기 위해 할 수 있었던 유일한 것은 회전하기 전에 1로 다시

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1); 
} 

을 규모를 되돌리려 그리고이 만드는

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation    { 
    self.appContainer.transform = CGAffineTransformMakeScale(.8, .8); 
} 

후 새로 수정 변환으로 크기를 조정하는 것입니다 예상대로 작동하지만, 전체 화면으로 돌아가서 .8 스케일로 돌아가는 대신 새로운 변환에서 올바른 .8 스케일로 이동하고 싶습니다.

+0

당신이 마지막으로이 취급 적이 ..... 당신이 사용하는 모든 자동 크기 마스크를 제거 할 수 있다고 생각? 나는 해결책을 찾고있다. –

+0

해결책을 찾고 있는데 .. – Pipiks

답변

0

원본으로 되돌리려면 변환을 CGAffineTransformIdentity로 설정하십시오.

self.appContainer.transform = CGAffineTransformIdentity; 
+0

보기의 변환이 장치 회전 이벤트에 의해 수정되고 있기 때문에 이것이 작동하지 않습니다. 다시 정체성으로 설정함으로써 나는 같은 결과를 얻고 있습니다. 장치 회전 이벤트 후보기의 변형은 해당 방향의 .8 배까지 가져와야합니다. – MobileOverlord

+0

이것은 작동하지 않습니다. – trapper

0

나는

[self.appContainer setAutoresizingMask:UIViewAutoresizingNone];