iOS 6 용 앱을 업데이트하려고하는데 주요 과제는 자동 회전입니다. 이 주제와 관련된 질문 및 검색 결과가 있지만 내 질문에 직접 답하는 것은 없습니다. shouldAutorotateToInterfaceOrientation:
과 그 대체품 인 supportedInterfaceOrientations
및 shouldAutorotate
의 사용 중단에 대해 알고 있습니다.이 질문에 직접적인 영향을주지는 않습니다.iOS 6에서 willAutorotateToInterfaceOrientation을 어떻게 대체 할 수 있습니까?
대신 내 애플이 회전 애니메이션과 레이아웃 재구성을 거의 다 처리하는 곳인 willAutorotateToInterfaceOrientation:duration:
을 어떻게 대체 할 수 있는지 알고 싶습니다. 내 메인보기 컨트롤러는 실행시 기본 창에 추가되고 앱의 전체 내부 레이아웃을 처리하는 전체 화면보기를 제어합니다. 이는 다소 복잡합니다. 이 뷰 컨트롤러의 willAutorotateToInterfaceOrientation:duration:
메서드는 일부 하위 뷰의 크기를 직접 조정하고 다른 하위 뷰를 처리하는 C++ 개체를 호출합니다. 가변적 인 하위 뷰를 포함하는 인터페이스의 가변적 인 특성, 크기를 조정하지 않는 일부, 오프 스크린 등의 일부가 포함되어 있기 때문에 Apple의 자동 크기 조정 마스크가 이런 종류의 자동 회전을 처리 할 수있는 충분한 솔루션을 제공한다고 생각하지 않습니다 .
willAutorotateToInterfaceOrientation:duration:
과 같은 방식으로 조치를 취하는 방법이 있습니까? 내가 온라인에서 그리고 실험을 통해 발견 했으므로이 방법과 didRotateFromInterfaceOrientation:
은 iOS 6의 메인보기 컨트롤러에서 호출되지 않습니다. 어쨌든 viewWillLayoutSubviews
은 결코 호출되지 않습니다. .
추가 정보가 필요하면 알려주십시오. 이것에 대한 솔직한 솔류션이 있기를 바란다. 그리고 이것은 애플이 새롭고 더 좁은 프로토콜을 따르지 않는다면 늑대에게 개발자를 포기한 사례가 아니다.
편집 :
AppDelegate.mm에서 :
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window makeKeyAndVisible];
MainViewController* mainViewController= [[MainViewController alloc] initWithNibName:nibName bundle:[NSBundle mainBundle]];
[self.window addSubview:mainViewController.view];
return YES;
}
MainViewController 이것은 명확히하는 데 도움이 경우가 여기에 기본 I 이야기하고있는 기능의 껍질입니다. mm :
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[UIView beginAnimations:NULL context:nil];
[UIView setAnimationDuration:duration];
[someViewController someMethod];
[someView setFrame:someRect];
[UIView commitAnimations];
someObject->CustomRotationFunction(toInterfaceOrientation, duration);
}
Genera lly 말하자면, 이러한 함수와 메소드에서 계속 진행되는 것에 대해 최악의 상황을 가정합니다. someObject
은 프레임을 변경하는보기를 소유하고 있으며, 프레임을 변경하는보기를 소유 한 다른 객체를 소유하고 있습니다.
[WWDC 2012] (http://developer.apple.com/itunes/?destination=adc.apple.com.16351493766) 세션 (236)에 대해 23에서 시작하고 이에 대한 논의의 절반 분.어떤 종류의 미친 구현이 있는지 전혀 모르기 때문에 여기에서 좋은 대답을하는 것은 어렵습니다. 그래서 먼저 비디오를 보시기 바랍니다. –