zoukankan      html  css  js  c++  java
  • 上拉、下拉UITableView,交互式 模态弹出(自定义弹出动画)

    部分代码 InteractiveTransition 类继承NSObject:

    - (instancetype)initWithPresentingController:(UITableViewController *)presentingVc presentedController:(UIViewController *)presentedVc {
        self = [super init];
        if (self) {
            self.vc = presentedVc;
            self.vc.transitioningDelegate =self;
            self.presentingVc = presentingVc;
        }
        return self;
    }
    
    - (void)new_scrollViewWillBeginDragging:(UIScrollView *)scrollView {
        self.interactiveTransition = [[UIPercentDrivenInteractiveTransition alloc]init];
        [self.presentingVc presentViewController:self.vc animated:YES completion:nil];
    }
    
    - (void)new_scrollViewDidScroll:(UIScrollView *)scrollView {
        
        CGFloat offsetY = fabs(scrollView.contentOffset.y);
        
        CGFloat screenH = [UIScreen mainScreen].bounds.size.height / 3.0;
        progress = offsetY / screenH;
        progress = progress-0.3;
        if (progress > 0) {
            [self.interactiveTransition updateInteractiveTransition:progress];
        }
        
    }
    - (void)new_scrollViewWillEndDragging {
        if (progress < 0.4) {
            [self.interactiveTransition cancelInteractiveTransition];
        }else {
            [self.interactiveTransition finishInteractiveTransition];
        }
        self.interactiveTransition = nil;
    }
    
    - (nullable id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source {
        
        return self.animation;
    }
    
    - (id<UIViewControllerInteractiveTransitioning>)interactionControllerForPresentation:(id<UIViewControllerAnimatedTransitioning>)animator {
        
        return self.interactiveTransition;
    }

    PresentAnimation 类继承NSObject 实现 UIViewControllerAnimatedTransitioning协议

    - (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext {
        return 1.0;
    }
    
    - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
        
        UIView *toView = [transitionContext viewForKey:UITransitionContextToViewKey];
        UIView *containerView = [transitionContext containerView];
        [containerView addSubview:toView];
        
        toView.frame = CGRectMake(50, containerView.bounds.size.height, containerView.bounds.size.width - 100, containerView.bounds.size.height - 300);
        
        [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
            toView.frame = containerView.bounds;
        }completion:^(BOOL finished) {
            [transitionContext completeTransition:![transitionContext transitionWasCancelled]];
        }];
        
    }

    控制器:

    - (InteractiveTransition *)interactive {
        if (!_interactive) {
            _interactive = [[InteractiveTransition alloc]initWithPresentingController:self presentedController:[[TwoViewController alloc]init]];
        }
        return _interactive;
    }
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
        
        [self.interactive new_scrollViewWillBeginDragging:scrollView];
    }
    
    
    - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
        
        [self.interactive new_scrollViewWillEndDragging];
    }
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        
        [self.interactive new_scrollViewDidScroll:scrollView];
    }

    完整代码:http://pan.baidu.com/s/1i3Uewip

  • 相关阅读:
    仿pinterest实现瀑布流布局效果
    .NET执行cmd时,如何调试命令的执行效果
    在Sharepoint 2007 整合Discuz Nt论坛
    如何使用EWS获取邮件及其附件
    启明星win7桌面天气预报软件下载与使用方法(带时间)
    【helpdesk】启明星helpdesk7.0版本里,实现邮件提交功能介绍和原理
    微软.NET设计上的一个错误(从.NET1.14.0),不知道以后.NET会不会修复这个错误
    什么是Traceback Ping
    用ASP生成RSS以及讀取RSS
    [轉]訂單編號方式探討
  • 原文地址:https://www.cnblogs.com/CyanStone/p/5116946.html
Copyright © 2011-2022 走看看