• 漂亮的下落式动画载入视图


    - (IBAction)changePassWord:(id)sender

    {

        CGSize size = [[UIScreen mainScreen] bounds].size;

        

        //增加半透明层

        bgView = [[UIView alloc]initWithFrame:self.view.frame];

        bgView.backgroundColor = [UIColor colorWithWhite:0.2 alpha:0.7];

        [self.parentViewController.view addSubview:bgView];

        

        //把修改密码窗口加到父视图上,因为UITableView没法直接加subview。给窗口一个初始化的旋转角度。

        self.changePWD = [[self storyboard]instantiateViewControllerWithIdentifier:@"ChangePassWordID"];

        self.changePWD.delegate = self;

        [self.changePWD.view setFrame:CGRectMake(0, -200, 280, 200)];

        [self.changePWD.view setTransform:CGAffineTransformMakeRotation(-M_PI / 20)];

        [self.parentViewController.view addSubview:self.changePWD.view];

        

        //动画载入密码窗口

        [UIView animateWithDuration:0.3 animations:^{

            [self.changePWD.view setTransform:CGAffineTransformMakeRotation(0)];

            [self.changePWD.view setFrame:CGRectMake(20, size.height/2-100, 280, 200)];

        }];

        

        //给窗口增加拖动手势

        UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panPaswordView:)];

        [panRecognizer setMinimumNumberOfTouches:1];

        [panRecognizer setMaximumNumberOfTouches:1];

        [self.parentViewController.view addGestureRecognizer:panRecognizer];

        

    }

    -(void)panPaswordView:(id)sender {

        [self.view bringSubviewToFront:[(UIPanGestureRecognizer*)sender view]];

        CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view];

        

        //拖动开始时记录浮动窗口的中心点

        if ([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {

            firstX = self.changePWD.view.center.x;

            firstY = self.changePWD.view.center.y;

        }

        

        //获取拖动后的坐标

        translatedPoint = CGPointMake(firstX, firstY+translatedPoint.y);

        

        //禁止往上拖动

        if (translatedPoint.y < firstY) {

            return;

        }

        

        //在拖动时即时更新窗口位置

        [self.changePWD.view setCenter:translatedPoint];

        

        //拖动结束时关闭密码窗口,并移除附加的手势

        if ([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {

            

            [self removePasswordView];

            

            [self.parentViewController.view removeGestureRecognizer:(UIPanGestureRecognizer*)sender];

        }

    }

    - (void)removePasswordView

    {

        [UIView animateWithDuration:0.5 animations:^{

            

            [self.changePWD.view setFrame:CGRectMake(20, 1136, 280, 200)];

            bgView.alpha = 0.0;

            

        } completion:^(BOOL finished) {

            [self.changePWD.view removeFromSuperview];

            [bgView removeFromSuperview];

        }];

    }

  • 相关阅读:
    如何自建appender扩展Log4j框架
    在O(1)时间删除链表结点
    My First GitHub
    JAVA序列化和反序列化
    [转]Vim 复制粘帖格式错乱问题的解决办法
    Centos清理内存 内存回收释放及内存使用查看的相关命令
    Spark HA 的搭建
    Ambari安装
    Hadoop HA的搭建
    Hadoop32位和64位的查询
  • 原文地址:https://www.cnblogs.com/tuhaoYY/p/3854005.html
Copyright © 2020-2023  润新知