Представьте Контроллер представления, который является половиной размера экрана - PullRequest
6 голосов
/ 27 апреля 2011

Я пытаюсь представить контроллер вида, который только половину высоты использует

[self presentModalViewController:menu animated:YES];

Проблема в том, что, когда он представлен, контроллер представления заканчивает тот же размер, что и экран. Я также попытался сделать «меню» в полный размер экрана и изменить прозрачность вида на белый, но это тоже не работает.

Ответы [ 3 ]

8 голосов
/ 28 апреля 2011

Просто используйте базовую анимацию или анимационные переходы с UIView, который в два раза меньше экрана.Вам понадобится вид держателя, который вы добавите к основному виду.

Поместите вид половинного размера под экраном (halfView.y = 480 или 320 в зависимости от ориентации).

Анимируйте еговверх.

Примерно так:

// set up an animation for the transition between the views
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.5];
    [animation setType:kCATransitionPush];
    [animation setSubtype:kCATransitionFromBottom];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

    [holderView addAnimation:animation forKey:@"SwitchToView1"];
5 голосов
/ 27 апреля 2011

На устройствах iPhone и iPod touch представление modalViewController всегда отображается в полноэкранном режиме.На iPad презентация зависит от значения в свойстве modalPresentationStyle.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

Если вы хотите закрыть только часть экрана, вы можете сделать анимацию, которая скользитконтейнер UIView и все, что вы хотите показать в позиции на экране.

Я бы порекомендовал вам прочитать этот пост: Прозрачный модальный вид на контроллере навигации

«Я пытался сделать фон просмотра белым»

Это определенно не сработало бы, вы могли бы написать [UIColor clearColor] однако представление контроллера вида, которое покрыто модальным, исчезнет изэкран, когда анимация завершена.Так что, если вы сделаете фон белым, вы, скорее всего, в итоге будете наблюдать фон окон, который белый, а не тот, который вам нужен.

0 голосов
/ 27 апреля 2011

Вы действительно не хотите пытаться сделать это с помощью UIViewController.Добавьте UIView в представление текущего контроллера, предоставьте этому представлению свой собственный объект контроллера, отличный от UIViewController, если он нужен для управления его поведением.

Я рассмотрел некоторые подробности того, что вы пытаетесь сделать, снаружиКонтракт, предоставленный UIViewController здесь: http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...