Эй, я сам придумал Обходной путь.Чтобы вспомнить проблему, только первый вид дополнения к окну распознает изменения ориентации.
Я переклассифицировал мой TabBarController и заставил его повернуть Поворот к ориентации интерфейса
- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self adjustViewsForOrientation:toInterfaceOrientation];
}
- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) {
NSLog(@"Landscape");
//Do Your Landscape Changes here
}
else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) {
NSLog(@"Portrait");
//Do Your Portrait Changes here
}
}
Но теперь "viewControllers""моего TabBarController по-прежнему не распознает мои InterfaceOrientations.Итак, я придумал следующее:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
for (int i = 0; i < [self.viewControllers count]; i++ ) {
[[self.viewControllers objectAtIndex:i] didRotateFromInterfaceOrientation:fromInterfaceOrientation];
}
}
Это вызовет метод didRotateFromInterfaceOrientation из всех подклассов TabBarController:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
[self adjustViewsForOrientation:self.interfaceOrientation];
}
- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) {
NSLog(@"Subview Landscape");
//Do Your Landscape Changes here
}
else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) {
NSLog(@"Subview Portrait");
//Do Your Portrait Changes here
}
}
Как вы можете видеть, я вызываю [self adjustViewsForOrientation:self.interfaceOrientation];
в моемSub Viewcontroller, который даст актуальную ориентацию методу регулировки.Если вы используете fromInterfaceOrientation, это будет неправильная ориентация, потому что изменение уже сделано!
Другая моя проблема - UISplitviewController в TabBarController, но я, по-видимому, заставил его работать приемлемым образом.Проблема такая же, как и для UIViewControllers.Он не будет пересматривать изменения ориентации, так что вы должны создать его подкласс, но я уверен, что он заработает на 100%.Когда я искал в Интернете, я нашел хороший пример кода для сборки Splitview.Так что, может быть, вы попробуете: http://blog.trustedones.com/development/ipad-uisplitviewcontroller-replacement-for-sethidesmasterviewinportrait http://www.trustedones.com/apps/ipad
Он также поддерживает SplitView в портретном режиме, поэтому вам, возможно, понравится.Я делаю!
Надеюсь, что смогу помочь кому-нибудь с этим постом. Приветствия, нетц