我有TabBarController,它有自定义中心按钮(UIButton)。这里的目标是在用户从其他ViewControllers返回到TabBarController时为其不透明度设置动画。
所以我想要实现的是开始将中心按钮的不透明度从0设置为1,具体取决于" far"用户已刷过。
我正在使用interactivePopGestureRecognizer
,因此请检测边缘滑动"进度"对我来说是理想的。
或者还有其他方法吗?也许检测topViewController的可见性?
答案 0 :(得分:2)
我刚刚通过添加自定义目标
解决了这个问题@objc func handlePopGesture ()
{
viewtoanimate.alpha = self.transitionCoordinator!.percentComplete
}
然后
alpha
答案 1 :(得分:0)
UINavigationControllerDelegate
有此委托方法
- (nullable id <UIViewControllerInteractiveTransitioning>)navigationController:(UINavigationController *)navigationController
interactionControllerForAnimationController:(id <UIViewControllerAnimatedTransitioning>) animationController NS_AVAILABLE_IOS(7_0);
您可以在导航控制器委托上调用此方法以获取UIPercentDrivenInteractiveTransition
的实例。该类对象具有属性
@property (readonly) CGFloat percentComplete;
使用它来查找完成转换的百分比。
答案 2 :(得分:0)
我认为您不需要滑动进度的中间值,请尝试以下代码:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
id<UIViewControllerTransitionCoordinator> t = self.transitionCoordinator;
BOOL b = [t animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
aCustomView.alpha = 1.f;
} completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
}];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
id<UIViewControllerTransitionCoordinator> t = self.transitionCoordinator;
BOOL b = [t animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
aCustomView.alpha = 0.f;
} completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
}];
}