iOS关于搜索不规则瀑布流布局的实现小结
最近在项目开发中遇到了不规则搜索布局的问题。
之前常用的解决方案是用一个tableview用一个循环动态的加载,唯一的缺点是需要动态的移除,其实也已经足够。https://download.csdn.net/download/kuuailetianzi/9905316,需要的话可以下载使用。请教了一下身边的美女同事,她那边给出的思路是用UICollectionView的复用来实现。解决方案如下。
1、pod导入JQCollectionViewAlignLayout库
2、核心代码如下
//此处用库对象JQCollectionViewAlignLayout
JQCollectionViewAlignLayout * layout = [[JQCollectionViewAlignLayout alloc]init];
layout.itemSize = CGSizeMake(K_CC_SCREEN_WIDTH, 40);
//此处设置行间距
layout.minimumLineSpacing = 10;
//此处设置列间距
layout.minimumInteritemSpacing = 10;
self.collectionView = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout];
[self.bottomView addSubview:self.collectionView];
self.collectionView.delegate = self;
self.collectionView.dataSource = self;
self.collectionView.layer.masksToBounds = YES;
self.collectionView.layer.cornerRadius = 8.0;
self.collectionView.showsVerticalScrollIndicator = NO;
self.collectionView.showsHorizontalScrollIndicator = NO;
self.collectionView.backgroundColor = [UIColor clearColor];
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(K_CC_SCREEN_WIDTH);
make.bottom.mas_equalTo(self.bottomView);
make.left.mas_equalTo(0);
make.top.mas_equalTo(60);
}];
self.collectionView.contentInset = UIEdgeInsetsMake(10, 10, 10, 10);
[self.collectionView registerClass:[CCHighSeasPoolReturnCell class] forCellWithReuseIdentifier:kCellReuseIdentifier];
[self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:kFooterReuseIdentifier];
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
CCHighSeasPoolReturnCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kCellReuseIdentifier forIndexPath:indexPath];
NSString *codevalue= self.data[indexPath.section].items[indexPath.item].itemtitle;
//选中项索引,修改背景、文本颜色,并给变量赋值
if (indexPath.item==self.selectItemIndex) {
cell.contentView.backgroundColor = K_CC_COLOR_STRING(@"#343E79");
cell.lblTitle.textColor = K_CC_COLOR_STRING(@"#FFFFFF");
self.rejectreason=codevalue;
}else{
cell.contentView.backgroundColor = K_CC_COLOR_STRING(@"#F5F5F5");
cell.lblTitle.textColor = K_CC_COLOR_STRING(@"#333333");
}
cell.title = codevalue;
return cell;
}
//初始化数组数据
-(void)loadData{
if (!_data) {
NSMutableArray *data = [[NSMutableArray alloc] init];
//JQCollectionViewItemsVerticalAlignment verticalAlignments[] = {JQCollectionViewItemsVerticalAlignmentCenter, JQCollectionViewItemsVerticalAlignmentTop, JQCollectionViewItemsVerticalAlignmentBottom};
//设置每一项水平从左到右对齐
JQCollectionViewItemsHorizontalAlignment horizontalAlignments[] = {JQCollectionViewItemsHorizontalAlignmentCenter, JQCollectionViewItemsHorizontalAlignmentLeft, JQCollectionViewItemsHorizontalAlignmentRight, JQCollectionViewItemsHorizontalAlignmentFlow};
//JQCollectionViewItemsDirection directions[] = {JQCollectionViewItemsDirectionLTR, JQCollectionViewItemsDirectionRTL};
for (int i = 0; i < 1; i++) {
JQCollectionViewItemsHorizontalAlignment horizontal = horizontalAlignments[1];
NSInteger count = self.dataAddressList.count;
NSMutableArray *items = [[NSMutableArray alloc] init];
for (int j = 0; j < count; j++) {
UIColor *color = K_CC_COLOR_STRING(@"#F5F5F5");
NSDictionary *dic=[self.dataAddressList objectAtIndex:j];
NSString *codevalue=[dic objectForKey:@"codevalue"];
//宽度自适应
CGFloat labelW = [CCCommonAPI getWidthWithString:codevalue font:K_CC_FONT(14) constraintSize:CGSizeMake(MAXFLOAT, 40.0f)];
//此处为了给每一个项留一定的空白
CGFloat width = labelW+10;
CGSize size = CGSizeMake(width, 40);
CCHighSeasPoolReturnItemModel *item = [[CCHighSeasPoolReturnItemModel alloc] initWithColor:color size:size index:j];
item.itemtitle=codevalue;
[items addObject:item];
}
CCHighSeasPoolReturnModel *section = [[CCHighSeasPoolReturnModel alloc] init];
// section.verticalAlignment = vertical;
section.horizontalAlignment = horizontal;
//section.direction = JQCollectionViewItemsDirectionLTR;
section.items = items;
[data addObject:section];
// }
// }
_data = data;
}
}
}
iOS关于搜索不规则瀑布流布局的实现小结的更多相关文章
- Django 项目补充知识(JSONP,前端瀑布流布局,组合搜索,多级评论)
一.JSONP 1浏览器同源策略 通过Ajax,如果在当前域名去访问其他域名时,浏览器会出现同源策略,从而阻止请求的返回 由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一 ...
- jsonp、瀑布流布局、组合搜索、多级评论(评论树)、Tornado初识
1.JSONP原理剖析以及实现 1.1 同源策略限制 用django分别建立两个项目,jsonp01和jsonp02,然后再在这两个项目里分别建立一个app,比如名字叫jsonp1.jsonp2:js ...
- Jquery瀑布流布局
瀑布流布局最近真的很流行,很多人都跟我一样想知道是怎么做出来的吧,经过网上搜索大量的参考结合N边的实验今天终于被我写出来了,为了便于大家理解我使用了jQuery(当然用源生js代码执行的效率会高一些, ...
- Xamarin自定义布局系列——瀑布流布局
Xamarin.Forms以Xamarin.Android和Xamarin.iOS等为基础,自己实现了一整套比较完整的UI框架,包含了绝大多数常用的控件,如下图 虽然XF(Xamarin.Forms简 ...
- vuejs实现瀑布流布局(二)
瀑布流布局已然完成,那么剩下的就是另一个比较大的工程了——无限加载. 之前说了,这个活动项目是基于SUI-Mobile搭建的,所以可以直接使用sui内建组件“无限加载”来实现这个功能. 没有真实的数据 ...
- 手摸手,带你实现移动端H5瀑布流布局
移动端瀑布流布局是一种比较流行的网页布局方式,视觉上来看就是一种像瀑布一样垂直落下的排版.每张图片并不是显示的正正方方的,而是有的长有的短,呈现出一种不规则的形状.但是它们的宽度通常都是相同的 因为移 ...
- JS瀑布流布局
好久没有更新博客喽,今天来说一个瀑布流布局. 瀑布流在很多网站已有很多,现在只说一下简单的实现原理吧, 1.计算一行可以排放几个元素 2.建立一个数组用于存放第一行的每个元素的高度. 3.得到数组中的 ...
- CSS3学习总结——实现瀑布流布局与无限加载图片相册
首先给大家看一下瀑布流布局与无限加载图片相册效果图: 一.pic1.html页面代码如下: <!DOCTYPE html> <html> <head> <me ...
- myWaterfall - jQuery瀑布流布局插件
myWaterfall - jQuery瀑布流布局插件 Demo http://jsfiddle.net/q3011893/p5k2ogy8/embedded/result,html,css,js/ ...
- jquery实现简单瀑布流布局(续):图片懒加载
# jquery实现简单瀑布流布局(续):图片懒加载 这篇文章是jquery实现简单瀑布流布局思想的小小扩展.代码基于前作的代码继续完善. 图片懒加载就是符合某些条件时才触发图片的加载.最常见的具体表 ...
随机推荐
- mysql报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
mysql报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql ...
- 在Ubuntu 18.04 Desktop图形中配置静态和动态IP
在Ubuntu 18.04 图形界面中配置静态和动态IP 设置静态ip 设置为dhcp动态获取ip
- 为什么模具设计人员中很多人不喜欢使用CAE仿真软件呢? —— 以汽车制造领域为例
参考论文: 通常 的有限元分析软件在后处理 上只是将计算结果 以图形或表格的 方式显 示 在屏幕上 , 并没有对计算结果进行系统的整理 和提炼 . 在基于有 限元 计算结果 的反复设计过程 中, 设计 ...
- 新手入门深度学习:在不使用Google的情况下如何在国内获得免费的算力 —— 算力共享,驱动人工智能创新的新引擎
分享链接地址: 算力获新生 | 算力共享,驱动人工智能创新的新引擎
- 【转载】 取消idea双击shift时出现的全局搜索 (使用pycharm IDE时出现的问题)
原文地址: https://blog.csdn.net/hxy199421/article/details/83030603 最近在使用pycharm的时候出现文章标题的问题,由于以前写的代码都是比较 ...
- 【转载】 IEEE Signal Processing Letters(SPL)投稿经验分享
版权声明:本文为CSDN博主「yellow7-」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/weixin_4 ...
- (续) python 中 ctypes 的使用尝试
内容接前文: https://www.cnblogs.com/devilmaycry812839668/p/15032493.html ================================ ...
- ChatGPT到底有用没用?—— 个人观点:有用,但不多
今天接到在大连某高校任职的师弟电话,师弟十分喜欢用ChatGPT,尤其是其文字自动生成的功能,这对于我们这种文字工作者来说简直就是"福音",但是我对这个观点却是有所保留. 当年区块 ...
- 【转载】 推荐算法之Thompson(汤普森)采样
原文地址: https://www.cnblogs.com/gczr/p/11220187.html ------------------------------------------------- ...
- vue&element项目实战 之api模块化与公共字典
4.api模块化配置 步骤一:编写字典api即dic.js import request from '@/utils/request' // 查询字典列表 export const getDicLis ...