最近项目中用到筛选功能 具体效果图如下
做这个之前 我先考虑到的是 每个Item 之间的算法和自定义的每个Item样式的UI,其次我们要考虑产品的业务逻辑以及点击展开后的Height和Top
自定义的View 也就是Item 就不多说了,很简单.
1.我们整个白色的View 背景要满足点击展开后的效果,也就是我们要随着每个展开的高度做适应,首先我选择用的是滚动视图
2.筛选功能一般是一个按钮点击触发的,动画特效在这也不多说,因为点击筛选后 下拉出来的界面每个第一个选项默认选中,所以我们要点击的时候就要知道对应的值
3.关于请求数据:我这里选择胖model的结构方式, 把使用到的结构体都丢到整体model 例子:
weakSelf.filterCondition = [[MYFilterConditionModel alloc] initWithJson:dict];
这样就比较方便了一行就可以满足我们接受所有服务器返回的结构体或者数组字典等等
4.创建每一个View 拿品牌来说,整个品牌(Title) + 下面排序的Item + 展开按钮 都是一个整体View 每次都要去创建一个对象View 丢到数组中 在从中抽取
5.改变 每个视图之间的Height 和Top and scrollview 的 contentSize
改变height 和top 的核心代码如下:
- (void)updateLayout
{
CGFloat top = 0;
for (MYSearchFilterConditionView *filter in self.searchArray) {
filter.top =