使用ECSlidingViewController时,为什么underRightViewController不能正确动画?
问题描述:
我想实现ECSlidingViewController执行缩放效果。当使用underLeftViewController
和anchorTopViewToRightAnimated
时,效果是完美无瑕的。但是,在特定情况下,我需要使用underRightViewController
和anchorTopViewToLeftAnimated
。但是,当我这样做时,在左侧完美工作的相同视图控制器在右侧的行为不可预测。观点基本上在正确的地方结束,但他们根本没有动画。这是我创建和设置ECSlidingViewController代码:使用ECSlidingViewController时,为什么underRightViewController不能正确动画?
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进行更多的自定义。
感谢您对此提供的任何帮助。