2012-01-17 5 views
1

ipad에서 ios objective C에서 하나의 모달 뷰에서 회전 동작에 문제가 있습니다. shouldAutoRotate 메서드에서 요소의 위치를 ​​지정하고 해당 부모 뷰도 회전 할 수 있지만 모달 뷰를 회전하면 요소가 올바른 위치에 배치되지 않습니다.모달 뷰 컨트롤러가 올바르게 회전하지 않습니다.

<UIView: 0x72bc160; frame = (0 0; 768 1004); clipsToBounds = YES; 
autoresize = W+H; layer = <CALayer: 0x13f324f0> 

그리고 가로 모드 : I는 세로 모드에서보기를 열면

은 자세한 내용은,이 데이터를 얻을

<UIView: 0x1358f3b0; frame = (0 0; 768 748); clipsToBounds = YES; 
autoresize = W+H; layer = <CALayer: 0x1358f3e0>> 

을하지만 내가보기를 수평 프레임 변경을 회전하는 경우 세로 프레임으로 ...

내가 잘못하고 있니?

+0

문제가 실제로 무엇인지 이해하기가 어렵습니다. 루트보기 컨트롤러에서 모달보기를 표시하려고 했습니까? – thumbsup

+0

컨트롤이 모달 뷰에서 자동으로 회전하게됩니다. – vishy

답변

5

저는보기 컨트롤러 회전으로 많은 재미를 보았습니다. 명심해야 할 두 가지가 있습니다

  1. 당신이 화면 전체를 덮고있는 (그리고 서브 뷰 변환과 특정 아무것도하지 않음)는 광범위한 가능한보기에서 모달 뷰 컨트롤러를 제시하고 있는지 확인, 가정 컨트롤러, 종종 응용 프로그램의 루트보기 컨트롤러.
  2. 모든 개념적보기 제어기가 회전 이벤트를 따라 개념적 하위보기 제어기로 전달되는지 확인하십시오. (이것은 iOS 5 이전에 잘 정의되지 않았습니다.)

백그라운드에서보기 컨트롤러가 회전 이벤트를 받았기 때문에 이러한 상황이 발생했는데, 내가 제시 한 특정보기 컨트롤러는 이를 무시하고 모달 뷰 컨트롤러로 전달하지 않아 불일치가 발생합니다.

+0

고맙습니다. 루트 뷰와 다른 하나의 뷰에 모달 뷰를 넣었습니다. – damacri86

+1

또 다른 한 가지 : 다른 뷰 컨트롤러에서 모달 뷰 컨트롤러를 제공하는 경우 예측할 수없는 인터페이스 회전 문제가 발생할 수 있습니다 (모달 식으로 표시됨). 이와 같은 모달 체인에서 뷰 컨트롤러를 제공한다면 어쨌든 잘못된 아키텍처의 징후 일 수 있습니다. –

+1

@EricGoldberg : 좋은 점은 항상 가장 넓은 뷰 컨트롤러에서 뷰 컨트롤러를 표시하는 것을 잊지 않는다면, 항상 "최상위"뷰 컨트롤러이므로이 문제를 피할 수 있습니다. – Jesper

관련 문제