문제

지금까지 모든 질문을 살펴봤지만 실제로 이 질문에 답하는 사람은 없는 것 같습니다.

UITabBarController를 만들고 여기에 여러 개의 뷰 컨트롤러를 추가했습니다.대부분의 보기는 세로로 표시되지만 하나는 가로로 보아야 합니다.가속도계를 사용하거나 사용자가 장치를 회전할 때를 감지하고 싶지 않고, 하단 탭에서 해당 보기를 선택할 때 가로 모드로 보기를 표시하고 싶습니다.

해당 항목을 선택할 때 탭이 사라지거나 보기가 회전하는 등의 일반 애니메이션이 발생하고, 다른 보기를 선택할 때 그 반대가 발생하기를 원합니다.

뷰를 어떤 방향으로 표시할지 시스템에 알려주는 내장 속성이나 메서드가 없나요?

shouldautorotate를 재정의하는 중...메서드는 내가 알 수 있는 한 전혀 아무것도 하지 않습니다.

내가 감사하지 않을 답변 유형은 "RTFM"입니다. 이미 알고 있고 지금까지 iPhone용으로 개발한 사람이라면 M에서 F-ing R에 유용한 것이 거의 없다는 것을 알고 있기 때문입니다.

도움이 되었습니까?

해결책

an 게시하다 도움이 될 수있는 포럼에서. 짧은 대답은 ViewWillAppear : method에서보기가 그려지면보기 또는 컨트롤러를 수동으로 회전해야한다는 것입니다.

CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90));
landscapeTransform = CGAffineTransformTranslate (landscapeTransform, +80.0, +100.0);

[[appDelegate navController].view setTransform:landscapeTransform];

다른 팁

이를 위해 제가 하는 일은 다음과 같습니다.

먼저 파일 상단, #imports 바로 아래에 이 정의를 넣으세요.

#define degreesToRadian(x) (M_PI * (x) / 180.0)

그런 다음 viewWillAppear에서:방법

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];     
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) {  
    self.view.transform = CGAffineTransformIdentity;
    self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
    self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
}

애니메이션을 적용하려면 다음과 같이 애니메이션 블록으로 전체를 래핑할 수 있습니다.

[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];     
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) {  
    self.view.transform = CGAffineTransformIdentity;
    self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
    self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
}
[UIView commitAnimations];

컨트롤러 클래스의 방향 메소드를 무시하고 다음과 같은 풍경으로 강제로 강제로합니다.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
    // Overriden to allow any orientation.
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}

간단하고 효율적입니다!

TabbarController의 모든보기 또는 NavigationController의 모든 뷰 컨트롤러가 회전에 동의하는 경우에만 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top