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

第三方库

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  --->  240
if(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);
    }];
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值