Я проверил другие ответы, но не нашел ничего, что действительно описывает мою ситуацию. Так что вот так.
У меня есть оконное приложение, которое создает и загружает UIViewController из xib. Он имеет отключенную строку состояния, высоту 480 и UISegmentedControl с началом координат у 451. Он хорошо отображается в нижней части экрана. *
В viewDidLoad UIViewController я создаю UIView initWithFrame:CGRectMake(0.0, 0.0, 320.0, 431.0)];
(это 480 - 29 пикселей для UISegmentedControl и 20 для строки состояния.) Я добавляю его в UIViewController с помощью [self.view addSubview:gameBoard];
. Затем некоторые части игры UIView добавляются как подпредставления UIView игровой доски, и все отображается так, как я думаю.
При касании некоторых из этих подвидов UIView должно появиться меню. Я создал UIViewController с необходимыми элементами управления на нем. Я использую метод делегата для вызова из подпредставлений, которые принимают инициирующие события, в корневой UIViewController - который делает
self.squadOrders = [[SquadOrders alloc] initWithNibName:@"SquadOrders" bundle:nil];
squadOrders.viewControllerDelegate = self;
[self presentModalViewController:squadOrders animated:YES];
И модальное диалоговое окно отображается так, как я думаю, скользя вверх от нижнего края экрана, не закрывая строку состояния, а закрывая UISegmentedControl, упомянутый в нижней части корневого UIViewController. Это уволено
[self dismissModalViewControllerAnimated:YES];
и вот тут начинается беда. Элемент управления UISegmented смещен вниз на 20 пикселей, так что только 9 пикселей из него видны в нижней части экрана. В верхней части, где вид был смещен, имеется 20-пиксельная белая щель.
* включение строки состояния на этом или любом другом xib не меняет описанное поведение вообще.
Другие вопросы, связанные с переполнением стека:
IPhone - После увольнения контроллера модального представления - в верхней части страницы остается пробел - но в данном решении не было загружено другого контроллера представления в качестве подпредставления контроллера представления, отображающего модальное поле - но я не, только UIViews. Также предлагается просто сбросить соответствующий кадр после того, как модал исчезнет, но это похоже на читерство.
Содержание UIScrollView сместилось после закрытия ModalViewController - Я играл с высотой всех представлений и контроллеров - уверен, что они совпадают, не помогло. Опять же, кадр можно сбросить, но он касается только симптома.
Есть и другие, но пока эта проблема не решена.