Представление модального контроллера представления без покрытия текущего представления на iPhone
Я пытался добавить вид контейнера с оставлением 20px пространства по бокам. Но, похоже, это неправильный способ сделать это...
// ADD CHILD VIEW CONTROLLER
[parentViewController addChildViewController:childViewController];
[parentViewController.view addSubview:childViewController.view];
[childViewController didMoveToParentViewController:parentViewController];
// REMOVE THE CHILD VIEW CONTROLLER
[childViewController willMoveToParentViewController:nil];
[childViewController view] removeFromSuperview];
[childViewController removeFromParentViewController];
ОБНОВЛЕНИЕ Я понял это с помощью этого MZFormSheetController " https://github.com/m1entus/MZFormSheetController" Форма представления с классными переходами представления.
5 ответов
Используйте MZFormSheetController " https://github.com/m1entus/MZFormSheetController" Форма представления с классными переходами представления. Или, iOS 8 и выше, вы можете использовать viewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
Удачи, дайте мне знать, если вы хотите полный фрагмент...
Вы можете попробовать что-то вроде,
DetailViewController *viewController= [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
viewController.modalPresentationStyle=UIModalPresentationFormSheet;
viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:viewController animated:YES completion:^{
viewController.view.superview.frame = CGRectMake(0, 0, 310, 500);
viewController.view.superview.center = self.view.center;
}];
Задавать superview.frame
а также modalTransitionStyle
по твоим словам.
Вы на правильном пути. Но вы должны надолго добавить вид контейнера на раскадровку, тогда вы можете просто показать / скрыть его setHidden:
метод.
Также вы можете показать второй контроллер, анимированный этим методом.
Лучше всего иметь свой собственный контроллер и вид.
На главном контроллере используйте настоящий контроллер вида.
[self presentViewController:myController animated:YES completion:nil];
На viewDidLoad настроить кадр myController.
CGRect newFrame = self.view.frame;
newFame.size.width -= 40;
newFame.size.height -= 40;
newFrame.origin.x = 20;
newFrame.origin.y = 20;
self.view.frame = newFrame
Добавление в качестве childViewController предназначено для удержания контроллера представления, когда вам нужен один контроллер с несколькими представлениями, каждый со своим собственным контроллером.
На iPhone и iPod touch представленное представление всегда полноэкранное. Таким образом, он не может быть представлен не полноэкранным контроллером просмотра.
Не представляя контроллер представления, добавьте представление контроллера представления как подпредставление к родительскому контроллеру представления. Таким образом, вы можете контролировать внешний вид, даже теневой слой под ним.