需要滑动的view添加手势
-(void)addGestures{
__weak typeof(self)base = self;
[self addGestureRecognizer:[UITapGestureRecognizer createBlock:^(id sender) {
[base remoViews];
}]];
[self addGestureRecognizer:[UIPanGestureRecognizer createBlock:^(id sender) {
UIPanGestureRecognizer *pan = (UIPanGestureRecognizer *)sender;
CGPoint p = [pan translationInView:base];
if (p.x > 0){
if (pan.state == UIGestureRecognizerStateChanged){
CGFloat f = p.x / ((width)/2);
base.alpha = 0.5 * (1 - f);
base.bgView.alpha = 1 - f * 1;
CGRect rect = base.bgView.frame;
rect.origin.x = p.x + (width)/2;
base.bgView.frame = rect;
}
else if (pan.state == UIGestureRecognizerStateEnded){
if (p.x > 50){
[base remoViews];
}
else{
[base showViews];
}
}
}
}]];
}
对应的展示和删除方法
#pragma mark 公共方法
-(void)showViews{
CGRect rect = _bgView.frame;
rect.origin.x = (width)/2;
__weak typeof(self)base = self;
[UIView animateWithDuration:0.3 animations:^{
base.alpha = 0.5;
base.bgView.frame = rect;
base.bgView.alpha = 1;
}];
}
-(void)remoViews{
CGRect rect = _bgView.frame;
rect.origin.x = width;
__weak typeof(self)base = self;
[UIView animateWithDuration:0.3 animations:^{
base.alpha = 0;
base.bgView.frame = rect;
base.bgView.alpha = 0;
}];
}
CGFloat f = p.x / ((width)/2);
base.alpha = 0.5 * (1 - f);
base.bgView.alpha = 1 - f * 1;
CGRect rect = base.bgView.frame;
rect.origin.x = p.x + (width)/2;
base.bgView.frame = rect;
f:透明度的比例
0.5到0的透明度是base.alpha 变化长度是f
从1到0的透明度是base.bgView.alpha