嗨我在iOS8中旋转Modal呈现的ViewController时遇到问题。所有这些在iOS7及更低版本上都能正常工作。
App Struct:
我的问题是当我提供模态控制器时旋转设备时,模态控制器的视图没有调整到景观框架。
看起来像这样:
调用了旋转方法,当我手动将视图框架设置为横向时,右侧(屏幕灰色边)的用户交互不起作用。
RootController代码:
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
- (NSUInteger) supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
模态控制器代码:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration
{
if (self.presentingViewController != nil) {
[self.presentingViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation
duration:duration];
}
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration
{
if (self.presentingViewController != nil) {
[self.presentingViewController willRotateToInterfaceOrientation:toInterfaceOrientation
duration:duration];
}
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
if (self.presentingViewController != nil) {
[self.presentingViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation];
}
}
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
} completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {
}];
}
任何人都可以帮我解决iOS8的这个问题。
答案 0 :(得分:1)
你是如何呈现模态视图控制器的?你为什么要自己转发轮换方法?如果操作正确,应该自动处理,您需要的只是-supportedInterfaceOrientations
方法(并且正如Jasper所说,autoresizingMask或Auto Layout约束需要正确)。