美文网首页iOS 动画
简单的实现抽屉效果

简单的实现抽屉效果

作者: 呼哮山庄 | 来源:发表于2016-10-31 21:40 被阅读19次

    .h文件
    #import <UIKit/UIKit.h>
    @interface MainViewController : UIViewController
    + (instancetype)mainViewControllerWithLeftViewController:(UIViewController *)leftViewController withMainPageViewController:(UIViewController *)mainPageViewController;
    @end
    .m文件
    #import "MainViewController.h"
    #define KWidth self.view.frame.size.width
    #define KHeight self.view.frame.size.height
    @interface MainViewController ()
    @property (nonatomic,strong)UIViewController *leftVC;
    @property (nonatomic,strong)UIViewController *centerVC;
    @property (nonatomic,assign)BOOL isSlider;
    @property (nonatomic,strong)UIView *corverView;
    @end

     @implementation MainViewController
     + (instancetype)mainViewControllerWithLeftViewController:(UIViewController *)leftViewController withMainPageViewController:(UIViewController *)mainPageViewController{
    MainViewController *mainVC = [[MainViewController alloc] init];
    mainVC.leftVC = leftViewController;
    mainVC.centerVC = mainPageViewController;
    return mainVC;
     }
     - (void)viewDidLoad{
    [super viewDidLoad];
    self.isSlider = NO;
    self.view.backgroundColor = [UIColor whiteColor];
    [self addChildViewController:self.leftVC];
    [self.view addSubview:self.leftVC.view];
    [self addChildViewController:self.centerVC];
    [self.view addSubview:self.centerVC.view];
    // 给左视图和主视图添加手势
    [self addGestureForView];
     }
     // 给主视图添加遮盖
     - (void)addCorverView{
    if (self.corverView) {
        [self.corverView removeFromSuperview];
        self.corverView = nil;
    }
    self.corverView = [[UIView alloc] initWithFrame:self.centerVC.view.bounds];
    _corverView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.0];
    [self.centerVC.view addSubview:self.corverView];
     }
     // 移除主视图遮盖
     - (void)removeCoverView{
    if (self.corverView) {
        [self.corverView removeFromSuperview];
        self.corverView = nil;
    }
     }
     // 给左视图和主视图添加手势
     - (void)addGestureForView{
    UISwipeGestureRecognizer *rightGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRightAction:)];
    rightGesture.direction = UISwipeGestureRecognizerDirectionRight;
    [self.centerVC.view addGestureRecognizer:rightGesture];
    UISwipeGestureRecognizer *leftGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeftAction:)];
    leftGesture.direction = UISwipeGestureRecognizerDirectionLeft;
    [self.centerVC.view addGestureRecognizer:leftGesture];
    UISwipeGestureRecognizer *leftVCLeftSwipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftVCLeftSwipeAction:)];
    leftVCLeftSwipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;
    [self.leftVC.view addGestureRecognizer:leftVCLeftSwipeGesture];
     }
     - (void)swipeRightAction:(id)sender{
    [self moveView:self.centerVC.view scale:0.8 panValue:KWidth];
    self.isSlider = YES;
    [self addCorverView];
     }
     - (void)swipeLeftAction:(id)sender{
    [self moveView:self.centerVC.view scale:1 panValue:KWidth / 2];
    self.isSlider = NO;
    [self removeCoverView];
     }
     - (void)leftVCLeftSwipeAction:(id)sender{
    [self moveView:self.centerVC.view scale:1 panValue:KWidth / 2];
    self.isSlider = NO;
    [self removeCoverView];
     }
     // 平移和缩放一个视图
     - (void)moveView:(UIView *)view scale:(CGFloat)scale panValue:(CGFloat)value{
    [UIView beginAnimations:nil context:nil];
    view.transform = CGAffineTransformScale(CGAffineTransformIdentity,scale,scale);
    view.center = CGPointMake(value, view.center.y);
    [UIView commitAnimations];
     }
     @end
    

    在ViewController中调用

    UIViewController *left = [[UIViewController alloc] init];
    left.view.backgroundColor = [UIColor yellowColor];
    UIViewController *right = [[UIViewController alloc] init];
    right.view.backgroundColor = [UIColor redColor];
    UIViewController *vc =  [MainViewController mainViewControllerWithLeftViewController:left withMainPageViewController:right];
    [self addChildViewController:vc];
    [self.view addSubview:vc.view];

    相关文章

      网友评论

        本文标题:简单的实现抽屉效果

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