iPad нестандартного размера контроллера модального вида - PullRequest
54 голосов
/ 21 июля 2010

У меня есть пара модальных контроллеров представления определенного размера.Я стараюсь избегать использования пользовательских представлений (создание полноэкранного черного полупрозрачного наложения поверх текущего представления, добавление модального представления поверх этого представления, создание анимации и т. Д.) Для его представления, поскольку не существует modalPresentationStyle, который бы соответствовал размеру моегоконтроллеры.

Сейчас я использую UIModalPresentationPageSheet, но мой вид меньше по высоте, и у меня появляется ужасное пустое пространство

Желаемая презентация

 _______________
|    _______    |
|   |       |   |
|   |  MyVC |   |
|   |       |   |
|    -------    |
 --------------- 

Фактическое представление

 _______________
|   |       |   |
|   |  MyVC |   |
|   |       |   |
|   |-------|   |
|   | blank |   |
 ---------------    

Если я использую UIModalPresentationFormSheet, контейнер будет меньше по ширине.

Я пытаюсь выяснить, как это сделать, но я нене знаю, возможно ли это.Каково решение проблемы представления модального VC, меньшего чем любой из стилей представления?Единственное решение состоит в том, чтобы устроить «пользовательский модальный контроллер движка»?Popovers не соответствует моим требованиям к дизайну: (

Ответы [ 13 ]

1 голос
/ 22 января 2015

Вы можете использовать MZFormSheetController вот так:

MZFormSheetController *formSheet = [[MZFormSheetController alloc] initWithSize:customSize viewController:presentedViewController];
[presentingViewController mz_presentFormSheetController:formSheet animated:YES completionHandler:nil];
1 голос
/ 02 мая 2013

Измените модальное представление «после», оно представлено с использованием метода presentModalViewController. Для изменения модального вида см. Эту ссылку

0 голосов
/ 21 января 2015

Это решение сработало для меня, так как у меня была та же проблема.

Моя модальная структура представления выглядит следующим образом (я использую UIModalPresentationCurrentContext для обоих представленных и представленных контроллеров для достижения прозрачности в представленном VC)

ModalViewController
  > UIView (view) - resized to the same size as the presenting controller but has semi-translucent background - done automatically
      >> UIView (contentView) - the true view with the content of the popup - this is the one that got consistently placed at the top of the screen all the time

В ModalViewController я переписал следующий метод, чтобы исправить проблему позиционирования:

- (void) viewWillLayoutSubviews(){
  [super viewWillLayoutSubviews];

  CGRect r = self.view.bounds();
  self.contentView.center = CGPointMake(r.size.width/2,r.size.height/2);
}

Сначала я создаю и изменяю размер представления содержимого, но другим способом.

Надеюсь, это кому-нибудь поможет.

...