Разные переходы на presentModalViewController: animated: - PullRequest
5 голосов
/ 07 сентября 2010

Я представляю модальный контроллер представления, который является контроллером панели вкладок с контроллером навигации внутри него.

Проблема в том, что мой первый вид имеет черный фон, и я хочу, чтобы новый вид имел белый фон.

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

Это приводит к тому, что у меня появляется лишняя полоса белого цвета НАД панелью навигации (куда идет строка состояния сети / состояния батареи / времени). Я не могу избавиться от этого. (

Так что, если бы я мог перевернуть изображение, или потушить его, или сдвинуть его вправо или влево или что-то, что могло бы быть намного лучше с эстетической точки зрения.

Есть ли способ сделать это? Или мне просто нужно установить "animated:" в NO?

Спасибо

1 Ответ

10 голосов
/ 21 сентября 2010

Я не понял, о чём ваша беда с разными цветными фонами. Непрозрачные фоны на ваших видах, особенно анимированные, заставляют приложение работать быстрее. Теперь о переходах, прежде чем вызывать presentModalViewController, вставьте одну из следующих строк:

modelViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
modelViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
modelViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
modelViewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;

Любое из вышеперечисленного изменит стиль перехода (хотя PartialCurl приведет к появлению белого бита последнего представления, все еще присутствующего в верхнем углу; оно, кажется, недокументировано, хотя и используется приложением Карты). Возможно, вам придется поиграть с тем, на что установлен modalTransitionStyle.

Сдвиг слева или справа является частью навигационного контроллера. Изменение фона, вероятно, не то, что вы хотите при работе с контроллером навигации.

Кроме того, эта дополнительная полоса над видом модели будет отображаться независимо от того, в какую сторону вы переходите. Это раздражает, но ее можно преодолеть следующим образом:

- (void)viewDidLoad {
    [super viewDidLoad];
    navigationController.view.frame = CGRectMake(0, 0, 320, 460); //<--This line
}
...