2011-10-29 1 views
2

모든 방향을 지원해야하는 iPad 응용 프로그램에서 작업하고 있습니다. 나는 펜촉을 사용하지 않습니다. 나는 4 개의 뷰를 배치하는 UIWindow를 가지고있다 :상태 표시 줄 프레임이 세로 방향으로 붙어 있고 window.view를 닫습니다.

2 개는 전체 너비를 차지하지만 높이는 그다지 높지 않다.
다른 두 개는 높이의 대부분을 차지하며 동일한 origin.x를 공유합니다. 그들은 겹치지 않는다.

하나의보기를 기본 창의 하위보기로 지정하고 나머지는 window.view에 하위보기로 지정합니다.

문제 : 회전 후에 상태 표시 줄의 프레임이 방향에 관계없이 원래 위치 (세로 방향의 세로 방향)에 고정되어있는 것처럼 보입니다. 그러나 상태 표시 줄은 회전합니다.

메모했습니다. red-glasses 정보 성 기사. 그러나 이것은 똑같은 문제로 보이지 않습니다. 이는 메인 뷰를 윈도우의 서브 뷰로 설정하여 레드 글래스 방식으로 상태 표시 줄을 덮을 수 있다는 점에서 다릅니다. 나는이 접근법을 택했지만 문제는 계속된다.

willRotateToInterfaceOrientation :: 에서 window.view 프레임의 재구성 및 재 센터링을 시도했습니다. 나는 새로운 프레임/센터가 내가 기대했던 것임을 확인했다. 백그라운드에서 일부 재구성이 진행되는 것처럼 보입니다.

나는이 시점에서 어떻게 생각해야할지 모르겠다. ... 나는 누군가가이 주제에 대해 밝힐 수 있기를 바라고있다.

+0

정말요? 아무도?! – stephen

+0

마침내! 저는 일관되게 일치하는 견해를 가지고 있습니다. didFinishLaunchingWithOptions에 문제가 있음을 나타냅니다. 문제는 initWithFrame을 통해 내 UIWindow를 초기화하는 것이 었습니다. [[UIScreen mainScreen] applicationFrame]; 대신 init을 사용하여 초기화하면 (tack에서 코드 재 지정) 뷰가 예상대로 배치됩니다. 내 프레이밍 코드가 willRotateToInteraceOrientation :: 그중에서 일어났다 내가 계산하고 각보기에 대한 올바른 프레임을 설정 한 다음 UIView의 animateWithDuration를 사용하여 회전 애니메이션으로 변환 :::::이 누군가를하는 데 도움이 희망을 통합 .. – stephen

답변

1

마침내! 저는 일관되게 일치하는 견해를 가지고 있습니다.
이 문제가 didFinishLaunchingWithOptions이었다 밝혀 :

문제 내가 initWithFrame를 통해 내 UIWindow를 초기화이었다 : [[UIScreen mainScreen] applicationFrame]

대신 init을 사용하여 초기화했을 때 뷰가 예상대로 배치되었습니다. 위의 설명처럼 willRotateToInterfaceOrientation에 리샘플링 코드를 남겨두면 작동합니다.

가 willRotateToInterfaceOrientation에서 :, I를 산출하고, 각 뷰에 맞는 프레임을 설정하고

내가 지난 셀렉터 번째의 새로운 프레임을 설정하여 UIView animateWithDuration를 :::::하여 회전 애니메이션으로 변환 집적 animateWithDuration의 인수

호프가 도움이 되었기를 바랍니다.

+0

사과해야합니다. 이것은 엄청난 해결책으로 보였다. 이 변경을 한 지 몇 시간 후, 나는 모든 UI 이벤트를 잃어 버렸습니다.initWithFrame으로 돌아 왔을 때이 새로운 문제는 사라졌습니다. 이후로 applicationFrame에서 상태 표시 줄을 제거하면 더 이상 내 견해를 재구성 할 필요가 없다는 것을 알게되었습니다. 그건 내 iPad 애플 리케이션을위한 IOS 4.3 시뮬레이터를 사용하여 보유하고 있습니다. – stephen

+0

그 의미는 applicationFrame의 원점을 applicationFrame 크기에 추가 한 다음 applicationFrame의 원점을 제로화하는 것입니다. – stephen