Наконец код был следующим:
// Remove the modalTransitionStyle to enable the default behaviour and change to PageSheet
modalViewNavController.modalPresentationStyle = UIModalPresentationPageSheet;
// Present the modal view and adapt the center depending of the orientation
[self presentModalViewController:modalViewNavController animated:YES];
UIDeviceOrientation _orientation = [controller interfaceOrientation];
if (UIDeviceOrientationIsPortrait(_orientation)){
modalViewNavController.view.superview.center = CGPointMake(768/2, 1024/2 + 10);
} else {
modalViewNavController.view.superview.center = CGPointMake(768/2 - 10, 1024/2);
}
+10 и -10 из-за того, что по умолчанию NavigationController модального режима не отображался в верхней части экрана.
Это... дрянное решение: SS, но работает ... Хотя, если у кого-то есть предложения, было бы неплохо узнать.
Похоже, что если мне нужно включить один и тот же центр для обеих ориентаций, возможно, ориентация суперпредставления не является ожидаемой.
В этом решении, когда я отклоняю модальное представление на Портреториентация, по крайней мере, на симуляторе iPad, он автоматически поворачивается в портретный режим ...
Окончательное решение состояло в том, чтобы выполнить presentModalViewController над главным контроллером, UITabBar, и обновить метод dismiss, который будет выполнен также черезит.
[tabbar presentModalViewController:modalViewNavController animated:YES];
UIDeviceOrientation _orientation = [controller interfaceOrientation];
if (UIDeviceOrientationIsPortrait(_orientation)){
modalViewNavController.view.superview.center = CGPointMake(768/2, 1024/2 + 10);
} else {
modalViewNavController.view.superview.center = CGPointMake(1024/2, 768/2 + 10);
}
Наконец-то !!!!
Спасибо,
Иван