Я хотел бы получить SplitView в своем приложении iPad с моим левым меню в портретной ориентации, например в настройках iPad. На данный момент в портретной ориентации у меня есть полноэкранный просмотр содержимого, и у меня есть кнопка на панели навигации, которая включает всплывающее окно с моим левым меню.
iPad SplitViewController с меню в портретном режиме, как приложение настроек
Ответы (8)
Это волшебство, которое вам нужно:
Этот метод находится в UISplitViewControllerDelegate, доступном в iOS 5.0.
- (BOOL)splitViewController: (UISplitViewController*)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);
{
return NO;
}
Вам обязательно стоит взглянуть на MGSplitViewController Мэтта Геммелла.
MGSplitViewController - это замена UISplitViewController с открытым исходным кодом с различными полезными улучшениями.
К сожалению, это недокументированный метод (т.е. частный API).
[splitViewController setHidesMasterViewInPortrait:NO];
Я думаю, вам нужно создать настраиваемый контроллер представления, содержащий представление таблицы (в качестве главного контроллера) и другое общее представление (в качестве контроллера деталей), чтобы смоделировать это.
Самый простой способ добиться желаемого эффекта - просто не использовать UISplitView. Вместо этого просто создайте нормальное представление, поместите табличное представление на его левую сторону, ваше подробное представление на правую сторону, а затем установите параметры автоматического изменения размера соответствующим образом, чтобы все выглядело правильно как в портретной, так и в альбомной ориентации.
Как заявил ccwasden, shouldHideViewController устарел с iOS8. В Objective-C используйте ...
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;
Поскольку shouldHideViewController устарел в iOS8, вам нужно будет вместо этого использовать это (Swift):
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
некоторые люди задавали мне тот же вопрос в нашем блоге, и я нашел решение для этого. Вы найдете его в конце моего сообщения в блоге Ваш первый контроллер с разделенным представлением | Побережье.
В общем, все, что вам нужно сделать, это создать подкласс UISplitViewController и переопределить метод willAnimateRotationToInterfaceOrientation: duration: и настроить основные и подробные представления, когда ориентация интерфейса изменится на портретный режим.
Привет, Андреас
В Swift:
splitViewController.preferredDisplayMode = .allVisible