При использовании ECSlidingViewController, почему underRightViewController анимирует правильно?

Я пытаюсь реализовать ECSlidingViewController для выполнения эффекта масштабирования. При использовании underLeftViewController а также anchorTopViewToRightAnimatedэффект безупречен и исключителен. Тем не менее, мне нужно использовать underRightViewController а также anchorTopViewToLeftAnimated в особых случаях. Однако, когда я это делаю, тот же View Controller, который работал безупречно слева, непредсказуемо справа. Представления оказываются в основном в правильных местах, но они вообще не оживляют. Вот мой код для создания и настройки ECSlidingViewController:

 if (self.slidingViewController == nil)
    {
        self.fieldSearchController = [[FieldSearchTableViewController alloc] initWithNibName:@"FieldSearchTableViewController" bundle:nil];
        self.filterVC = [[FieldSearchFilterTableViewController alloc] initWithNibName:@"FieldSearchFilterTableViewController" bundle:nil];
        self.slidingViewController = [[ECSlidingViewController alloc] initWithTopViewController:self.fieldSearchController];
        //self.slidingViewController.underLeftViewController = self.filterVC;
        self.slidingViewController.underRightViewController = self.filterVC;
    }

    if (self.slidingViewController.parentViewController == nil)
    {
        [self addChildViewController:self.slidingViewController];
        CGRect frame = self.view.bounds;
        NSInteger topSize = self.navigationController.navigationBar.frame.size.height + [UIApplication sharedApplication].statusBarFrame.size.height;
        frame.origin.y = topSize;
        frame.size.height -= topSize;
        self.slidingViewController.view.frame = frame;
        [self.view addSubview:self.slidingViewController.view];
    }

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

  //0 - Default
    //1 - Fold
    //2 - Zoom
    //3 - Dynamic
    NSDictionary *transitionData = self.transitions.all[0];
    id<ECSlidingViewControllerDelegate> transition = transitionData[@"transition"];
    if (transition == (id)[NSNull null]) {
        super.slidingViewController.delegate = nil;
    } else {
        self.slidingViewController.delegate = transition;
    }

    NSString *transitionName = transitionData[@"name"];
    if ([transitionName isEqualToString:METransitionNameDynamic]) {
        self.slidingViewController.topViewAnchoredGesture = ECSlidingViewControllerAnchoredGestureTapping | ECSlidingViewControllerAnchoredGestureCustom;
        self.slidingViewController.customAnchoredGestures = @[self.dynamicTransitionPanGesture];
        [self.navigationController.view removeGestureRecognizer:self.slidingViewController.panGesture];
        [self.navigationController.view addGestureRecognizer:self.dynamicTransitionPanGesture];
    } else {
        self.slidingViewController.topViewAnchoredGesture = ECSlidingViewControllerAnchoredGestureTapping | ECSlidingViewControllerAnchoredGesturePanning;
        self.slidingViewController.customAnchoredGestures = @[];
        [self.navigationController.view removeGestureRecognizer:self.dynamicTransitionPanGesture];
        [self.navigationController.view addGestureRecognizer:self.slidingViewController.panGesture];
    }

    [self.slidingViewController anchorTopViewToLeftAnimated:YES];

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

Спасибо за любую помощь, предложенную в этом.

1 ответ

Решение

Краткий ответ: сначала нужно сбросить TopViewController.

См.: ECSlidingViewController 2, скользящий справа налево

Другие вопросы по тегам