I have a problem with iOS 7 that seems to be a bug or I just don't do something right. I have modalViewController that appears as a popover on iPad with ModalPresentationStyle. And it is not standard size, custom sized. Here is the code:
myViewController *myVC = [[myViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:myVC];
[nav setModalPresentationStyle:UIModalPresentationFormSheet];
[nav setModalTransitionStyle: UIModalTransitionStyleFlipHorizontal];
[self presentViewController:nav animated:YES completion:nil];
nav.view.superview.bounds = CGRectMake(0, 0, 320, 465);
It's all working fine in iOS 6, but in iOS 7 it's not centered. But if I set ModalTransitionStyle to UIModalTransitionStyleCrossDissolve it works fine. But only in this mode. Maybe someone stumbled on this one too and know how to fix it? I'm not a big fan of dissolve effect. Thank you.
I had the same problem. I have solved this by using another approach, found here.
What this solution proposes is to use the method (void)viewWillLayoutSubviews
So in case of @Manuel M. inside the GeneralSettingsViewController
add the code below:
// GeneralSettingsViewController
- (void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
self.view.superview.bounds = CGRectMake(0, 0, 497, 375);
}
And you won't need this code anymore:
self.generalSettingsVC.view.superview.frame = CGRectMake(0, 0, 497, 375);
self.generalSettingsVC.view.superview.center = self.view.center;
For @titicaca, you are using a UINavigationController
I haven't test it with this Controller but you could try the same solution I mentioned, extending the UINavigationController
and overwrite the viewWillLayoutSubviews
method.
[EDIT]
For @titicaca I tried it in a new project and for me it worked. What I did was having a custom navigation view controller CustomNavigationController
overriding the viewWillLayoutSubviews
like this:
- (void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
self.view.superview.bounds = CGRectMake(0, 0, 330, 284);
}
Then, the view controller that presents the CustomNavigationController
should execute a code similar to this:
UIViewController *myVC = [[UIViewController alloc] init];
[myVC.view setBackgroundColor:[UIColor redColor]];
CustomNavigationController *nav = [[CustomNavigationController alloc] initWithRootViewController:myVC];
[nav setModalPresentationStyle:UIModalPresentationFormSheet];
[nav setModalTransitionStyle: UIModalTransitionStyleFlipHorizontal];
[self presentViewController:nav animated:YES completion:nil];
You need to make sure though, that the dimensions of the self.view.superview.bounds = CGRectMake(0, 0, 330, 284);
are even numbers otherwise the text inside gets fuzzy, if there is any