第三方库
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);
}];
}
}