2013-12-05 2 views
8

enter image description hereПредставляя модальный контроллер представления без покрытия текущего вида на 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]; 

UPDATE Я понял это с помощью этого MZFormSheetController «https://github.com/m1entus/MZFormSheetController» Форма презентации с прохладным просмотром переходами.

+0

акций какой-то код –

+0

Спасибо за упоминание «MZFormSheetController»! –

ответ

6

MZFormSheetController "https://github.com/m1entus/MZFormSheetController" Презентация формы с прекрасным переходом зрения. Или, IOS 8 и выше, вы можете использовать viewController.modalPresentationStyle = UIModalPresentationOverCurrentContext; Удачи, дайте мне знать, если вы хотите полный фрагмент ...

6

Вы можете попробовать что-то вроде,

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 в соответствии с Вами.

+2

Он показывает черный фон, когда я представляю viewController. И я думаю, что UIModalPresentationFormSheet доступен только на iPad! –

+1

После iOS 8 вы можете сделать viewController.modalPresentationStyle = UIModalPresentationOverCurrentContext; –

0
  1. На iPhone и iPod touch представленный вид всегда полный экран. Таким образом, он не может представлять контроллер не полного экрана.

  2. Не представляя контроллер вида, добавьте представление контроллера представления в виде подсмотра в родительский контроллер представления. Таким образом, вы можете контролировать внешний вид, даже теневой слой под ним.

+0

концепция верна, но код не работает должным образом. Сначала дочерний вид проходит под навигационным контроллером контроллера корневого представления, поэтому мне пришлось скрыть его и добавить панель навигации ... Я думаю, что я должен придерживаться своего собственного кода на данный момент ...спасибо anyways –

1

Лучше всего иметь свой собственный контроллер и просмотр.

На главном контроллере используется текущий контроллер представления.

[self presentViewController:myController animated:YES completion:nil]; 

В режиме просмотраDidLoad отрегулируйте рамку 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 для контроллера представления оболочки, когда вы хотите, один контроллер с видом на кратные, каждый со своим собственным контроллером.

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

1

Вы находитесь на правильном пути. Но вам нужно постоянно добавлять контейнерный просмотр на раскадровку, тогда вы можете просто показать/скрыть его методом setHidden:.

Также вы можете показать второй контроллер, анимированный этим методом.

+0

вы правы, но это будет не так правильно, как это приложение имеет ... Я уверен, что есть код где-то для представления UIModalPresentationFormSheet на iPhone –

+0

@MazenKasser 'UIModalPresentationFormSheet' работает только на iPad. Вам нужно прочитать инструкции для iOS, написанную Apple. Думаю, вы еще этого не сделали. Даже если вы найдете такой метод, Apple будет ограничивать ваше приложение, потому что оно не соответствует рекомендациям пользовательского интерфейса. –

+0

все возможно, есть кучи сторонних библиотек, которые настраивают API-интерфейсы Apple. Relax Apple не откажется от приложения для такой вещи ... btw Я читал эту книгу с 2009 года, сынок, которого вы должны догнать –

Смежные вопросы