При использовании 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.