Как сделать так, чтобы модальное окно отображалось только наполовину?

Итак, у меня есть приложение, в котором вы играете в игру, и в конце оно запрашивает ваше имя для записи рекорда. Я хотел бы использовать модальное представление, чтобы выполнить это, но я испытываю некоторые сбои на этом пути. Пока что все, что у меня есть, — это модальное представление, скользящее до самого верха экрана, но там еще ничего нет, оно просто пустое:

    UINavigationController *navController = [UINavigationController new];
    [self presentModalViewController:navController animated:YES];

Я видел в нескольких других приложениях для iPhone возможность сделать модальное представление только на половине экрана (или меньше), а затем иметь текстовое поле, где вы можете получать ввод, например, для моего списка рекордов. Как мне ограничить размер модального представления? И, возможно, добавить на него текстовое поле? Любая помощь будет оценена по достоинству! Спасибо


person Steve    schedule 10.03.2010    source источник


Ответы (3)


При использовании анимации пример будет выглядеть примерно так:

        //Move Screen UP:
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationBeginsFromCurrentState:YES];
    self.view.frame = CGRectMake(self.view.frame.origin.x, (self.view.frame.origin.y - kTextView_Keyboard_Offset), self.view.frame.size.width, self.view.frame.size.height);
    [UIView commitAnimations];

Где «kTextView_Keyboard_Offset определен в моих Contants. Вы должны указать/заменить значение смещения, равное количеству пикселей в направлении, в котором вы хотите двигаться.

person Newbyman    schedule 10.03.2010

Что заставляет вас думать, что использовался PresentModalViewController?

Вы можете сделать это довольно легко с помощью UIViewController и анимации.

person Jordan    schedule 10.03.2010
comment
Я поддержу этот. Он выглядит как модальное представление и действует как модальное представление, но это не модальное представление. API модального просмотра Apple требует полноэкранного режима и не допускает прозрачности исходного вида. - person DBD; 29.03.2011

Определите полноэкранный вид с прозрачным фоном, а затем поместите затеняющий контент в любом месте.

Затем вы просто вызываете его, как и любое другое модальное представление.

person Kendall Helmstetter Gelner    schedule 10.03.2010
comment
Это не работает, потому что исходный вид на самом деле не находится за модальным. Как только происходит анимация перехода, исходный вид исчезает. - person DBD; 29.03.2011
comment
Хороший вопрос, я всегда забываю, что исходный вид не отстает от модального. Вы по-прежнему можете использовать прозрачный полноэкранный режим в предложенном Джорданом решении. - person Kendall Helmstetter Gelner; 29.03.2011