UINavigationController - анимация пролистывания влево и вправо между нажатиями и всплывающими окнами при представлении через presentViewController - PullRequest
0 голосов
/ 10 марта 2012

Предположим, у вас есть:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    UIViewController *rootViewController = [[UIViewController alloc] init];
    rootViewController.view.backgroundColor = [UIColor whiteColor];

    [self.window setRootViewController:rootViewController];
    [self.window makeKeyAndVisible];

    UINavigationController *modal = [[UINavigationController alloc] initWithRootViewController:[[PTFrontViewController alloc] init]];
    modal.modalPresentationStyle = UIModalPresentationFormSheet;
    [rootViewController presentViewController:modal animated:YES completion:NULL];

    return YES;
}

, тогда как PTFrontViewController и PTBackViewController контроллеры представления не имеют ничего интересного в этом примере.

Как вы могли бы выдвинуть экземплярPTBackViewController из PTFrontViewController анимация как в UIViewAnimationTransitionFlipFromLeft или UIViewAnimationTransitionFlipFromRight?

Я уже хорошо знаю эти три вещи:

  1. это не совсем то, что вы должныиспользовать presentViewController
  2. есть веская причина для UINavigationController анимации по умолчанию
  3. есть несколько ответов, как "настроить" UINavigationController анимацию по умолчанию при нажатии ивсплывающее окно, но если вы попробуете код для себя, вы заметите, что когда контроллер представления представлен через presentViewController, существуют тени и фоновые представления, которые не будут правильно анимироваться

Так что, пожалуйста,ответ, принимая во внимание эти вещи.Спасибо.

1 Ответ

1 голос
/ 10 марта 2012

Сначала - забудь UINavigationController. Если вам не нужна анимация по умолчанию, просто вставьте UINavigationBar в свои контроллеры. Это станет немного легче.

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

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

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