There is no 'standard' way to do this.
I have faked it by using a UIActionSheet
and setting the view controller's view to as a subview of the actionsheet, and then resetting the bounds of the actionsheet. This is a pretty odd hack and I wouldn't recommend it.
sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
sheet.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
UIViewController *modalController = [[UIViewController alloc] initWithNibName:@"SomeNib" bundle:nil];
sheet.autoresizesSubviews = NO;
[sheet addSubview:modalController.view];
[sheet showInView:self.view];
[UIView beginAnimations:nil context:nil];
[sheet setBounds:CGRectMake(0, 0, 320, 728)];
[UIView commitAnimations];
The obvious drawbacks here are the normal view controller events aren't triggered (viewWillAppear:
, viewDidAppear:
, etc)