2009-09-03 4 views
3

두 가지 앱을 사용하여 둘 다 앱을 사용하여 가로 모드로 iPhone을 사용하여 키가 크지 않고 화면이 넓어집니다.가로 방향이 강제로 설정된 앱의 난이도

내가 찾은 것 중 하나는 첫 번째 뷰가 잘 보일 것이지만 다른 모든 뷰는 요소가 설정되었는지 여부에 따라 한쪽으로 압착 된 하위 뷰 (UIButtons, UIPicker, UIViews)가 표시된다는 것입니다. 이동하거나, 크기를 변경하거나,보기 크기가 변경된 것과 동일한 위치에 있어야 함). 내 모든 견해는 가로 방향으로 IB로 디자인되었습니다. 내 기본 UIWindow 및 내가 생각할 수있는 모든 것이 가로 방향으로 배치되었습니다. 심지어 내 plist 파일 UIInterfaceOrientationLandscapeRight 플래그가 설정되어 있습니다.

이제 모든 내보기를 내 rootview 컨트롤러와 동시에로드하면 아무런 문제가 없습니다. 그러나 나중에로드 된 뷰가있는 경우 클립이 잘 리거나 압축됩니다. 나는이 작업을 수행해야하는 이유

[coming.view setFrame:CGRectMake(0, 0, 480, 300)]; 

누구나 알고

이 문제를 해결 얻을 수있는 유일한 방법은 새로운 관점에서 플립 내 코드에 다음 줄을 추가했다? 변환이 적용되지 않는 한로드 된보기가 300x480 인 것으로 iPhone이 가정한다는 것입니까?

감사합니다.

ps. 이는 전술 한 바와 같이보기, 나는 setFrame를 호출하지 않는 경우에 모습입니다 :

alt text http://files.me.com/mahboud/ljhvun

자신의 화면이 유사하게 아래로 압박해야합니다 첫 번째 이후에로드되는 모든 viewcontrollers. 어떤 이유로 첫 번째 viewcontroller는이 문제가 없습니다.

+0

iPhone OS 3.1.3에서 여전히 문제가 있음을 확인할 수 있습니다. ADC 회원 자격에는 두 가지 무료 지원 사건이 포함되어 있으므로, 신청서를 제출하여 뉴스가있는 경우 알려 드리겠습니다. –

답변

0

올바른 대답은 가로 방향을 어떻게 강요하는지에 달려 있습니다. UIViewController 및 회사를 통해이 작업을 수행하는 경우 비교적 간단해야합니다. 다른 방법은 아마 더 복잡합니다. 간단한 경우

, 당신은 당신의 뷰 컨트롤러, 설치 인터페이스 빌더에서 뷰 shouldAutorotateToInterfaceOrientation:을 무시하고의 Info.plist에 UIInterfaceOrientationLandscapeRightUIInterfaceOrientation 키를 설정하고 설정 할 수 있어야한다.

+0

UIInterfaceOrientationLandscapeRight가 info.plist에 설정되어 있으므로 앱이 시작에서 그 방향으로 올라오고 있습니다. 농무부의 모든 것은 동일한 방향으로 설정됩니다. 그럼에도 불구하고 두 번째 및 다음보기는 내용을 제대로 표시 할 수 있도록 위와 같이보기 크기를 설정해야합니다. – mahboudz

1

앱의 각보기에서 가로 모드를 사용하고 싶습니다. 펜촉을 가로 모드로 사용하기를 원합니다. 펜촉의 크기를 (상태 표시 줄의 경우 0,0,480,300, 비 상태 표시 줄의 경우 320)로 조정할 수 있습니다. 그리고 당신이 원하는 것을 디자인하십시오. 마지막으로 뷰 컨트롤러에서 자동 회전을 위해 no를 반환합니다. 그리고 마지막으로 뷰를 변환하고 회전합니다.

+0

I 변경 내 모든 \t 리턴 ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || \t \t \t \t (interfaceOrientation == UIInterfaceOrientationLandscapeRight)); 모든 경우 대신 NO를 반환합니다. 이 응용 프로그램은 세로 모드의 모든보기를 제공합니다. – mahboudz

+2

'shouldAutorotate'에 대해 NO를 반환해서는 안됩니다. NO를 돌려주는 것은 당신이 어떤 방향으로 가고 싶지 않다는 것을 의미하며 불가능합니다. UIKit은 콘솔에 경고를 기록 할 것입니다. 체크 아웃해야합니다. 대신, 원하는 방향에 대해 YES를 리턴하십시오. –

1

나는 비슷한 문제가있어서 SO에 대한 질문을 한 다음 알아 냈고 직접 대답했습니다. 그것을 확인하고 싶을 수도 있습니다.

나는이 문제를 해결하는 간단한 방법은 네비게이션 컨트롤러에 밀려

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
      (interfaceOrientation == UIInterfaceOrientationLandscapeRight)); 
} 

모든 뷰 컨트롤러에 표시 할 것, 내 루트 뷰 컨트롤러 서브 클래스 UINavigationController가 있고, 가로보기의 예를 처리하기 위해 shouldAutorotateToInterfaceOrientation을 구현했다

+0

클레이의 솔루션은 저에게 큰 도움이되었습니다. –

관련 문제