2010-04-20 6 views
1

나는 Tunepal의 iPhone 버전에서 회전 작업을 시도하면서 많은 좌절감을 보냈습니다.iPhone 회전 문제

첫 번째로 각보기를 제어하는 ​​탐색 컨트롤러가있는 탭 막대 컨트롤러가 있습니다.

실제로는 내보기 중 하나만 회전 할 수 있도록하려면 TuneDisplay입니다.

나는 a를 UITabBarController를 서브 클래스 내가 방법을 무시하고 내가 지원하려는 각 방향을 YES를 반환 한 각 탭에있는 뷰 컨트롤러의 각에서 shouldAutorotateToInterfaceOrientation:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { 
    if (self.selectedViewController != nil) 
    { 
     return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; 
    } 
    else 
    { 
     return (interfaceOrientation == UIInterfaceOrientationPortrait); 
    } 
} 

을 무시했다. 모두 좋고 선하고 모든 것이 제대로 작동합니다. 회전을 지원하지 않는 탭에서 회전을 시도하면 아무 일도 일어나지 않습니다.

해당 회전을 지원하는 것으로 간주되지 않는 탭으로 회전 한 탭에서 이동하면 문제가 발생합니다. 새 탭도 회전 표시됩니다! 모든이에 대한 스크린 샷이 여기에 포함됩니다

http://tunepal.wordpress.com/2010/04/20/rotation-woes/

내가 탭을 눌러에 세로로 다시 회전 할 수있는 방법이 있나요?

지원되지 않는 setOrientation 트릭을 시도했지만, 제대로 작동하지 않으며 두 번째로 마지막 빌드에서 Apple에 경고를 받았습니다.

만약 (내가 의심으로)이 동작을 제한 할 방법이 없다 : 나는 장치를 회전 할 때 마이크의 이미지 크기를 어떻게해야합니까

은?

단추 및 진행률 표시 줄을 도구 모음의 witdh에 맞게 확장하려면 어떻게합니까?

또한 ok로 회전하는 탭 중 하나에는 검색 막대가있는 테이블이 있습니다. 처음으로 오른쪽 또는 왼쪽으로 회전하면 검색 막대 오른쪽에 검정색 막대가 생깁니다. 이후에 다시 회전하여 다시 회전하면 막대가 사라집니다! 인터페이스 빌더의 검색 창에서 스트럿을 활성화하고 올바르게 동작해야하는 것처럼 보입니다.

해결 방법에 대한 의견이 있으십니까?

아이디어는, 피드백이 훨씬 브라이언

답변

0

감사 탭이 표시되는 동안 제대로 회전을 처리하는 것처럼 소리. 그러나 아시다시피 회전을 전환하는 빠른 방법은 없습니다. CGAffineTransform을 사용하여 뷰를 직접 회전시켜야합니다. 이 질문을보십시오 : Is there a documented way to set the iPhone orientation?

이미지 크기를 조정하려면 UIImageView 내부의 화살표를 클릭하여 Interface Builder에서 이미지를 볼 수 있어야합니다. 오른쪽 상단 모서리에 작은 화살표가 있습니다.이 화살표를 클릭하면 크기가 제대로 조정되었는지보기 위해 시계가 회전 할 때의 동작을 볼 수 있습니다. 그러나 링크 된 질문에 대한 답과 같이 이미지를 확대하지 않고 순환 게재를 사용하지 않는 것이 좋습니다.

+0

자동 회전을 올바르게 사용하도록 설정 한 경우 뷰를 회전시켜야합니다. 실제로 그것은 그런 식으로 작동하지 않지만해야합니다. –

+0

예,하지만 그의 문제는 그가 탭 바 버튼 중 하나를 두드렸을 때 풍경에 있으면 세로로 돌아가고 싶다고 생각합니다. – Don

+0

그리고, 당신의'view.transform = CGAffineTransformMakeRotation (M_PI * n); '해결책은 그것을 제공합니다. – Don

1

이것은 완전한 답변이 아닙니다. 회전은 심각하게 일치하지 않습니다. 당신은 옳은 일을했습니다.여러 측면이 시뮬레이터에서 작동하지 않으므로 장치에서 모든 테스트를 확인해야합니다. 구형 OS 버전에서는 테이블 헤더 및 검색 창 크기가 전체 너비로 조정되지 않으므로 3.1.3 이상을 유지하십시오.

흔한 문제 :

  1. YES을 반환 할 shouldAutorotateToInterfaceOrientation:을 구현;
  2. 네비게이션 컨트롤러를 사용하는 경우 루트보기 컨트롤러가 방향을 지원해야합니다.
  3. 툴바가있는 경우 모든 항목의보기 컨트롤러가이를 지원해야합니다.
  4. 및 탭 표시 줄 컨트롤러와 동일합니다.
당신은 장치의 더 많은 유용한 정보를 얻을 방향 알림 설정해야 할 수 있습니다

:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(orientationChanged:) 
    name:UIDeviceOrientationDidChangeNotification object:nil]; 

전원을 끄고 작업이 완료 될 때 통지에서 자신을 제거해야합니다; 이것은 높은 오버 헤드를 가져야합니다.

이미지의 크기를 조정하려면 contentMode 속성을 설정하십시오. IB에서 설정하고있는 autoresizingMask과 함께하시면됩니다.

세로 및 가로 모드에는 두 가지 다른 펜촉을 사용할 수 있습니다. 그런 일을하는 예제 프로젝트가 있습니다 ("WhichWayIsUp"); View Controller 프로그래밍 안내서도 참조하십시오 ("대체 조경 인터페이스 만들기").

회전 메서드가 호출되면 UI가 계속 회전해야합니다. 그들이 있어야 할 때 언제나 부르심을받는 것은 아닙니다.

회전을 강제하려면 뷰에서 회전 변환을 호출하는 것이 어렵지 않습니다. 필요하지 않아야하지만 때때로 회전하는 유일한 방법입니다.

view.transform = CGAffineTransformMakeRotation(M_PI * n); 

알아 낸 사항은 알려주십시오.

+0

음, shouldAutorotateToInterfaceOrientation을 사용하여 특정 탭에 대해 원하지 않는 자동 회전을 비활성화하여 정상적으로 작동하도록했습니다. 탭 관리자가 shouldAutorotateToInterfaceOrientation을 준수하지 않으므로 다른 탭에서 전환하면 계속 회전 된 탭이 표시됩니다. 그 엉덩이에 고통. 인터페이스 빌더에서보기 모드를 Aspect Fit으로 변경하여 이미지의 크기를 조정하는 방법을 알아 냈으므로보기가 좋게 보입니다. 버튼을 확장하는 유일한 방법은 별도의 펜촉을 만드는 것입니다 (다른 아이디어가없는 한). – skooter500