花了半小时把筛选视图做成了一个小控件方便以

作者: 时时彩平台-编程  发布:2019-09-13

上周做完了义务筛选成效。花了半钟头把筛选视图做成了壹个小控件方便以往使用。

实际上项目功用图如下

图片 1荧屏快照2018-07-12 晌午10.03.58.png

开源控件效果

图片 2显示器快照2018-07-12 中午10.04.11.png

辅助手势侧滑,且view的frame和遮罩的阿尔法值跟随手势变化。

应用特别轻巧。导入头文件。#import "SideBarView.h"

类格局调用

[SideBarView show];

筛选列表(FilterConditionView)是我独立包装的三个视图,可以依照项目须求替换本身的视图。其实只要您只必要侧栏滑动作效果果的视图,用SideBarView就能够。

图片 3Snip20170422_9.png

大致说一下代码

基于UIView的根底动画达成视图的淡入淡出效果,而且对子视图和父视图增加手势和KVO监听。

-addSubViews{[self addSubview:self.coverView];[self addSubview:self.filterView];[UIView animateWithDuration:0.25 animations:^{ self.coverView.alpha = 0.4; self.filterView.x = SCREENW - 300;}];//给整个视图添加滑动手势UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panEvent:)];pan.delegate = self;[self addGestureRecognizer:pan];//给遮罩视图添加轻触手势UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector];[self.coverView addGestureRecognizer:tap];//给筛选视图添加KVO监听其x值的变化[self.filterView addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];}

手势和KVO的监听方法

 #pragma mark - private Methods - observeValueForKeyPath:(NSString *)keyPath ofObject:object change:(NSDictionary<NSString *,id> *)change context:context {//监听筛选列表的x值变化 if ([keyPath isEqualToString:@"frame"]) { CGRect new = [change[@"new"] CGRectValue]; CGFloat x = new.origin.x; if (x < SCREENW) { self.coverView.alpha = 0.4*(1-x/SCREENW)+0.1; }else{ self.coverView.alpha = 0.0; } } }- panEvent:(UIPanGestureRecognizer *)recognizer{//监听手指的移动 CGPoint translation = [recognizer translationInView:self]; if(UIGestureRecognizerStateBegan == recognizer.state || UIGestureRecognizerStateChanged == recognizer.state){ if (translation.x > 0 ) {//右滑 self.filterView.x = SCREENW-300 + translation.x; }else{//左滑 if (self.filterView.x < SCREENW-300) { self.filterView.x = self.filterView.x - translation.x; }else{ self.filterView.x = SCREENW-300; } } }else{ [self tapEvent]; } } - tapEvent{//监听手指的轻触 [UIView animateWithDuration:0.25 animations:^{ self.coverView.alpha = 0.0; self.filterView.x = SCREENW; } completion:^(BOOL finished) { [self removeAllSubviews]; [self removeFromSuperview]; }]; } - removeAllSubviews { while (self.subviews.count) { UIView* child = self.subviews.lastObject; [child removeFromSuperview]; } }

点击遮罩,或然左右滑行,视图都会自动消失,销毁view无需调用方法,都完全封装了。全部机能的表现你只必要调用二个show方法就可以。

此地的清空指的是清空驶列车表中的全体入选的筛选标准及追寻框输入的重要字,回到三个清零的筛选状态。实现是指依照列表中的全部筛选规范进行筛选。

微小戏弄一下体系须要,即便控件开拓起来特别轻松。可是做这些成效却用5个专门的学问日。因为此处的数码管理非常麻烦。一般的泛滥成灾筛选是混合,笔者的花色要求照旧是并集,筛选标准越来越多,得出的结果越多,全部符合条件的结果都要表现。並且列出的筛选规范都是最近客商所用到的东西。其它各类筛选规范数据管理起来也非常麻烦。做移动OA开辟,最恶心的正是多少处理。相当多时候,你会感到你是在做后台开荒.....

github地址:

本文由时时彩平台发布于时时彩平台-编程,转载请注明出处:花了半小时把筛选视图做成了一个小控件方便以

关键词: