美文网首页Xcode 代码片段
iOS动画移动+复原 (用于类似抽屉)

iOS动画移动+复原 (用于类似抽屉)

作者: _YN | 来源:发表于2018-12-19 20:35 被阅读0次

    如果您在阅读我的文章时有疑问 , 请点击这里

    添加导航控制器 , 并且添加左按钮和右按钮 , 实现点击左按钮出现左视图 , 点击右按钮出现右视图功能

    效果图


    主视图为白色 左视图为红色 右视图为绿色

    先创建对应的三个UIView

    //一个主视图
    @property (nonatomic , strong)UIView *MainView;
    //左面的视图
    @property (nonatomic , strong)UIView *LeftView;
    //右面的视图
    @property (nonatomic , strong)UIView *RightView;
    

    添加左按钮和右按钮

        //左按钮 , 点击左按钮的时候 , 会出现左视图
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"left" style:UIBarButtonItemStyleDone target:self action:@selector(left)];
        //右按钮 , 点击右按钮的时候 , 会出现右视图
        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"right" style:UIBarButtonItemStyleDone target:self action:@selector(right)];
    

    为三个视图设置位置和背景颜色 并且添加到视图

        //分别为主视图、左视图、右视图设置位置
        self.MainView = [[UIView alloc] initWithFrame:self.view.frame];
        self.LeftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, self.view.frame.size.height)];
        self.RightView = [[UIView alloc] initWithFrame:CGRectMake(self.view.frame.size.width - 300, 0, 300, self.view.frame.size.height)];
        //分别为主视图、左视图、右视图设置背景颜色  为了区分视图
        self.MainView.backgroundColor = [UIColor whiteColor];
        self.LeftView.backgroundColor = [UIColor redColor];
        self.RightView.backgroundColor = [UIColor greenColor];
        //添加视图  ,  主视图要在最上面
        [self.view addSubview:self.LeftView];
        [self.view addSubview:self.RightView];
        [self.view addSubview:self.MainView];
    

    点击左按钮和右按钮的方法以及返回

    //左按钮的点击方法
    - (void)left{
        //view 添加动画  设置为0.5秒完成
        [UIView animateWithDuration:0.5 animations:^{
            //除了左视图以外   所有视图向右移动  300
            
            //导航控制器 x = 300   (向右移动300) y = 0 (向上移动0)
            self.navigationController.navigationBar.transform = CGAffineTransformMakeTranslation(300, 0);
            //_MainView x = 300   (向右移动300) y = 0 (向上移动0)
            self->_MainView.transform = CGAffineTransformMakeTranslation(300, 0);
            //_RightView x = 300   (向右移动300) y = 0 (向上移动0)
            self->_RightView.transform = CGAffineTransformMakeTranslation(300, 0);
        }];
    }
    - (void)right{
        //view 添加动画  设置为0.5秒完成
        [UIView animateWithDuration:0.5 animations:^{
            //除了左视图以外   所有视图向右移动  300
            
            //导航控制器 x = -300   (向右移动-300) y = 0 (向上移动0)
            self.navigationController.navigationBar.transform = CGAffineTransformMakeTranslation(-300, 0);
            //_MainView x = -300   (向右移动-300) y = 0 (向上移动0)
            self->_MainView.transform = CGAffineTransformMakeTranslation(-300, 0);
            //_LeftView x = -300   (向右移动-300) y = 0 (向上移动0)
            self->_LeftView.transform = CGAffineTransformMakeTranslation(-300, 0);
        }];
    }
    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
        //view 添加动画  设置为0.5秒完成
        [UIView animateWithDuration:0.5 animations:^{
            //导航控制器   复原
            self.navigationController.navigationBar.transform = CGAffineTransformIdentity;
            //_LeftView   复原
            self->_LeftView.transform = CGAffineTransformIdentity;
            //_MainView   复原
            self->_MainView.transform = CGAffineTransformIdentity;
            //_RightView   复原
            self->_RightView.transform = CGAffineTransformIdentity;
        }];
    }
    

    相关文章

      网友评论

        本文标题:iOS动画移动+复原 (用于类似抽屉)

        本文链接:https://www.haomeiwen.com/subject/qrrskqtx.html