Принятие нового UISplitViewController
Я пытаюсь изменить поведение по умолчанию, которое возникает при использовании режима UISplitViewControllerDisplayModeAutomatic
.Скрытие наложения UISplitViewController в портфолио
При работе на портрете я хочу, чтобы основной оверлей спрятался, когда пользователь вызывает нажатие на детальную сторону. По умолчанию наложение остается на экране до тех пор, пока пользователь не перейдет на сторону детали.
Я попытался с помощью следующих с делегатом:
- (BOOL)splitViewController:(UISplitViewController *)splitViewController showDetailViewController:(UIViewController *)vc sender:(id)sender
{
if (splitViewController.displayMode == UISplitViewControllerDisplayModePrimaryOverlay) {
[UIView animateWithDuration:0.3 animations:^{
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
}];
}
return NO;
}
Это дает мне желаемое поведение в портрете, но это нарушает ландшафтный режим (который я хочу вести себя как UISplitViewControllerDisplayModeAllVisible
). Если вы нажмете и затем поверните устройство, левая сторона все еще скрыта (как и ожидалось). Я не могу найти appriprite место, чтобы зацепить его, чтобы повторно установить предпочтительный режим при повороте, чтобы показать левую сторону (так как коллекции тэгов нельзя использовать для описания пейзажа и портрета на iPad).
Как я могу вручную вызвать отклонение наложения?
Dupe Примечание:iOS8 изменил UISplitViewController
полностью, поэтому все остальные SO ответы до июня '14, вероятно, не так (и я копался многие из них, просто упаковывают)
Простой ответ. Я обнаружил, что продолжительность 0,3 будет немного медленнее по сравнению с анимацией при переключении или выводе с помощью салфетки или кнопки; Кажется, что около 0,2 секунд. – Nick
Эта работа замечательная, но если главный вид отображается, когда устройство повернуто для просмотра, то подробное представление не изменяет размер соответствующим образом. – Leon