SlideViewForFilter ,类京东的侧滑筛选demo

2016-10-14  本文已影响293人  邋了个遢

话说这个人啊, 真的是容易懒,今天你真不知道改写什么了,突然想起来之前用过的一个筛选控件, 搬出来晒一波,万一有需要的大兄弟呢.

项目中的效果


20CF1422-4E33-45BD-AE77-AD50E3C45CEE.png

原demo


filterS.gif

这个是弹出的事件

- (IBAction)filterAction:(id)sender {
    //侧滑FilterSlideViewController
    _slidebarVC = [[FilterSlideDataViewController alloc] init];
    _slidebarVC.view.frame  = [UIScreen mainScreen].bounds;
    [self.view addSubview:_slidebarVC.view];
    [_slidebarVC showHideSidebar];
    
    __weak typeof(self) weakSelf = self;
     //通过block 传出去
    _slidebarVC.backBlock = ^(id backData){
        if ([NSString stringWithFormat:@"%@",backData].length) {
            weakSelf.label.text = backData;
        }
    };

FilterSlideDataViewController中, _backBlock回传需要的值.

- (void)showHideSidebar{
    if (self.contentView.frame.origin.x == kSBWidth) {
        startContentOriginX = self.contentView.frame.origin.x;
    }
    [self autoShowHideSidebar];
}

#pragma mark Private
- (void)autoShowHideSidebar
{
    if (!self.isSidebarShown){
//        NSLog(@"自动弹出");
        self.view.hidden = NO;
        [UIView animateWithDuration:duration animations:^{
            [self setSidebarOriginX:kSBWidth - kSidebarWidth];
        } completion:^(BOOL finished) {
            _isMoving = NO;
            [self sidebarDidShown];
        }];
    }else{
//        NSLog(@"自动缩回");
        [UIView animateWithDuration:duration animations:^{
            [self setSidebarOriginX:kSBWidth];
        } completion:^(BOOL finished) {
            _isMoving = NO;
            self.view.hidden = YES;
            [self slideToRight];
        }];
    }
}

将得到的数据回传

//父类方法,当slidebar隐藏时调用
- (void)slideToRight{
    _backBlock([NSString stringWithFormat:@"%@%@",_choosedProvince,_choosedCity]);
}

比较好改
父子控制器.
看一下源码就懂了

直接贴github地址了,按需索取.
https://github.com/wingsrao/SlideViewForFilter

最后 感谢大神.

p.s 略累,所以没多写.

上一篇下一篇

猜你喜欢

热点阅读