Протестировано и работает для iOS 6 с использованием XCode 4.5
Я наткнулся на свой ответ после прочтения большинства советов здесь:
В методе viewWillAppear:(BOOL)animated
:
[super viewWillAppear:animated];
//resize modal view
self.view.superview.bounds = CGRectMake(0, 0, 432, 680);
В методе viewDidAppear:(BOOL)animated
:
CGPoint centerPoint = CGPointMake([[UIScreen mainScreen] bounds].size.width/2, [[UIScreen mainScreen] bounds].size.height/2);
self.view.superview.center = centerPoint;
Я пытался добавить центрирующий код в том же месте, что и код изменения размера, но это не сработало. По какой-то причине он работает только после появления на экране вида.
Я предполагаю, что это как-то связано с тем, как работает UIModalPresentationFormSheet, потому что когда я проходил через отладчик LLDB, я заметил, что есть переменная _formSheetSize, которая все еще {540, 620}. Пойди разберись.