PresentModalViewController с некоторым фреймом

Я хочу представить modalViewController с небольшой рамкой и в центре представления.

Это возможно?

Даже если я установлю некоторый фрейм для объекта viewController, presentModelViewController отображает это представление в полноэкранном режиме.

Кроме того, я использовал modalPresentationStyle как UIModalPresentationFormSheet. Я хочу, чтобы рамка была еще меньше.

Как это сделать?


person Bharath    schedule 27.06.2012    source источник


Ответы (3)


Вы не можете представить контроллер модального представления с меньшим размером кадра.

то, что вы можете попробовать сделать, это установить фон вашего контроллера модального представления прозрачным, а затем добавить представление меньшего размера в центре (или где бы вы ни хотели, чтобы оно было видно).

person Nitin Alabur    schedule 27.06.2012

Представление модального представления будет охватывать все представление, если вы не хотите охватывать все представление, вам следует создать представление самостоятельно, добавить его к текущему представлению в качестве подпредставления, а затем самостоятельно анимировать его переход. Это не будет отдельный viewController, потому что вы все еще работаете в пределах исходного представления.

person crackity_jones    schedule 27.06.2012

Да. Это возможно. Пожалуйста, выполните следующие шаги:

- (void)viewDidLoad {
     [super viewDidLoad];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShown:) name:UIKeyboardWillShowNotification object:nil];
     CGRect rect = CGRectMake(242, 60, 540, 312);
     self.controller.view.superview.frame = [self.view convertRect:rect toView:self.controller.view.superview.superview];
}

- (void)keyboardWillShown:(NSNotification*)aNotification {
     CGRect rect = CGRectMake(242, 60, 540, 312);
     self.controller.view.superview.frame = [self.view convertRect:rect toView:self.controller.view.superview.superview];
}

Вы должны установить кадр текущего контроллера после настройки вашего контроллера (непосредственно перед окончанием метода viewDidLoad).

Здесь я рассмотрел рамку контроллера представления iPad.

person ABC1    schedule 27.06.2012
comment
почему представление модального представления должно публиковать UIKeyboardWillShowNotification? к вашему сведению: поведение контроллера модального представления отличается для iPhone и iPad. - person Nitin Alabur; 27.06.2012
comment
Согласен, и поэтому я добавил свой ответ с учетом iPad. И я добавил уведомление с клавиатуры, потому что большинство людей ищут этот контроллер с текстовым полем, означающим настройку ввода с клавиатуры. - person ABC1; 27.06.2012
comment
@ ABC1.. Что именно ты пытаешься сделать? Здесь я не буду использовать никаких уведомлений с клавиатуры. Для некоторых действий с кнопками мне нужно предложить пользователю ввести свое имя с помощью небольшого представления. Не могли бы вы четко объяснить, что именно вы пытаетесь сделать здесь? - person Bharath; 27.06.2012
comment
ХОРОШО. Если ваш текущий контроллер представления не содержит текстового поля, то в этом случае не нужно добавлять какие-либо уведомления клавиатуры, просто установите фрейм в методе viewDidLoad после настройки текущего представления. Я добавил это уведомление для обработки рамки модального представления. Если представление содержит какое-либо текстовое поле, и пользователь хочет добавить текст, в это время срабатывает событие клавиатуры вверх, и мы должны соответствующим образом изменить кадр нашего текущего представления. Кроме того, установите свойства прямоугольника в соответствии с вашими требованиями. Здесь я привел только примерную стоимость. - person ABC1; 27.06.2012