iOS自定义控制器侧滑半屏显示

来源:互联网 发布:java面试简历免费下载 编辑:程序博客网 时间:2024/05/01 23:15

第三方库

RESideMenu

自定义侧滑半屏显示

-(id)initWithLeftVC:(UIViewController )leftVC mainVC:(UIViewController )mainVC rightVC:(UIViewController *)rightVC
{
self = [super init];

if(self){    [self.view addSubview:leftVC.view];    [self.view addSubview:rightVC.view];    [self.view addSubview:mainVC.view];    //viewController  想执行vc生命周期方法 必须把当前的VC加入到管理VC里    //事件响应链    [self addChildViewController:leftVC];    [self addChildViewController:mainVC];    [self addChildViewController:rightVC];    self.leftVC = leftVC;    self.rightVC = rightVC;    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panHandle:)];    [mainVC.view addGestureRecognizer:pan];}return self;

}

-(void)panHandle:(UIPanGestureRecognizer *)p
{
//[p locationInView:self.view];
CGPoint point = [p translationInView:self.view];

p.view.center = CGPointMake(p.view.center.x + point.x, p.view.center.y);[p setTranslation:CGPointZero inView:self.view];if(p.view.frame.origin.x > 0){    self.leftVC.view.hidden = NO;    self.rightVC.view.hidden = YES;}else{    self.leftVC.view.hidden = YES;    self.rightVC.view.hidden = NO;}//120  --->  240if(p.state == UIGestureRecognizerStateEnded){    NSInteger x_offset = 0;    if(p.view.frame.origin.x >= 150)    {        x_offset = [UIScreen mainScreen].bounds.size.width / 2.0f + 240;    }    else if(p.view.frame.origin.x <= -150)    {        x_offset = [UIScreen mainScreen].bounds.size.width / 2.0f - 240;    }    else    {        x_offset = [UIScreen mainScreen].bounds.size.width / 2.0f;    }    [UIView animateWithDuration:0.25 animations:^{        p.view.center = CGPointMake(x_offset, p.view.center.y);    }];}

}

0 0
原创粉丝点击