iOS关于搜索不规则瀑布流布局的实现小结

news2024/10/5 13:15:35

最近在项目开发中遇到了不规则搜索布局的问题。

之前常用的解决方案是用一个tableview用一个循环动态的加载,唯一的缺点是需要动态的移除,其实也已经足够。ios搜索历史记录不规则布局-IOS代码类资源-CSDN下载,需要的话可以下载使用。请教了一下身边的美女同事,她那边给出的思路是用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;

        }

    }

}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/25914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双向链表的实现

这里以结构体的方式来实现链表&#xff0c;也可以使用类。结构体在没有修饰符的情况下&#xff0c;默认是共有访问。如有不对&#xff0c;希望能指出。 目录 一、链表和结点结构体的声明 (ListNode.h) 二、链表各个功能的实现 1、增 (1) 构造函数&#xff08;创建链表头结点…

简历上写着“精通 MySQL”,阿里面试官非要跟我死磕,最后还是给我发了 offer

事情是这样的 前段时间因为想要跳槽就去面试了下阿里&#xff0c;大家也都清楚&#xff0c;精通这个词在简历上属于很难把握住的一个词&#xff0c;如果你在你的简历上面写着你精通 XX 技术&#xff0c;那面试官就会默认你是真的很会&#xff0c;刨根问底问到你崩溃。 我之前…

【踩坑】工作中真实踩坑,一个or让sql变慢7倍

工作中真实踩坑&#xff0c;一个or让sql变慢1000倍1.情况说明2.解释计划3.or改成union4.总结1.情况说明 测试环境&#xff0c;有两张表&#xff0c;分别是讲师表t_train_lecturer(后面简称B表&#xff09;,和讲师的授课时长表t_train_activity&#xff08;后面简称A表&#xf…

opencv 图像平滑

高通滤波可以找到图像的边缘。低通滤波可以去除噪音&#xff0c;模糊图像。 自定义滤波器 cv2.filter2D() import cv2 import numpy as np from matplotlib import pyplot as pltimg cv2.imread(img1.png) imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB) kernel np.ones((5, 5), n…

2022年11月10篇论文推荐

随着最大的人工智能研究会议(NeurIPS 2022)即将到来&#xff0c;我们进入了2022年的最后阶段。让我们回顾一下人工智能世界最近发生了什么。 在介绍推荐论文之前&#xff0c;先说一个很有意思的项目&#xff1a; img-to-music:想象图像听起来是什么样的模型! https://hugging…

人工智能和自动驾驶业务将是百度未来的最强增长动力

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 虽然百度(BIDU)长期以来一直缺乏增长动力&#xff0c;但猛兽财经认为现在可能是投资百度股票的时候了。因为我们认为百度在未来有几个可以实现强劲增长的动力。首先&#xff0c;百度可以利用其在中国自动驾驶市场的领先地位…

如何验证ARP缓存表最多能缓存多少条动态条目

ARP协议原理、ARP缓存表目的,这些在我的文章中已经反复提及过多次了。ARP缓存表里有静态和动态条目两种,静态的是写死的,没有老化时间,不会随着时间的流逝而自动删除。动态条目是缓存的,有老化时间timeout,如果长时间没有刷新,老化时间到了就会自动删除。老化时间是一个…

智能服务机器人产品及解决方案

产品概述 随着人工智能&#xff08;AI&#xff09;领域技术的不断发展和演进&#xff0c;面向人工智能的领域应用也越来越被更多的企业关注。信迈作为中国领先的创新型软件及信息技术服务商&#xff0c;一直致力于人工智能领域技术的探索和实践。 信迈凭借自身雄厚的技术能力…

Cookie注入和X-Forwarded-For注入

&#x1f4aa;&#x1f4aa;Cookie注入和X-Forwarded-For注入一 .Cookie注入1.创建漏洞环境2.漏洞攻击2.1判断是否有注入2.2信息收集2.3注入获取数据库名2.4注入获取表名2.5注入获取列名2.6注入获取信息3.sql靶场实战二. X-Forwarded-For注入1.创建漏洞环境2.漏洞攻击2.1判断是…

浅析Betaflight中的OSD叠加程序【MAX7456AT7456】

前言&#xff1a;想要对OSD下手已经不是头一次了&#xff0c;前几次都浅尝辄止。一个是能力不够&#xff0c;BetaFlight的代码体系太庞大了&#xff0c;看不懂也摘不出来。 这次要做一款带osd功能的接收机&#xff08;用在遥控车上&#xff09;&#xff0c;所以又来打飞控程序…

[附源码]java毕业设计校园快递管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

1万属性,100亿数据,每秒10万吞吐,架构如何设计?

有一类业务场景&#xff0c;没有固定的schema存储&#xff0c;却有着海量的数据行数&#xff0c;架构上如何来实现这类业务的存储与检索呢&#xff1f;58最核心的数据“帖子”的架构实现技术细节&#xff0c;今天和大家聊一聊。一、背景描述及业务介绍什么是58最核心的数据&…

深度学习入门(四十四)计算机视觉——多尺度目标检测

深度学习入门&#xff08;四十四&#xff09;计算机视觉——多尺度目标检测前言计算机视觉——多尺度目标检测教材1 多尺度锚框2 多尺度检测3 小结前言 核心内容来自博客链接1博客连接2希望大家多多支持作者 本文记录用&#xff0c;防止遗忘 计算机视觉——多尺度目标检测 教…

【Hack The Box】linux练习-- Postman

HTB 学习笔记 【Hack The Box】linux练习-- Postman &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f…

大学生旅游风景主题dreamweaver网页设计大作业-陕西渭南HTML+CSS制作网页

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

从不学无术到架构师Leader:这份java面试知识宝典,一举斩获京东T8

前言 面试了大大小小各种公司&#xff0c;有BAT的&#xff0c;上市的&#xff0c;AB各种轮的&#xff0c;初创的……今天大概列举了下&#xff0c;至少有30家公司。 在这里我总结了求职面试需要注意的各种问题&#xff0c;希望可以用我收集的《Java面试核心知识笔记》及面试经…

element UI 组件封装--搜索表单(含插槽和内嵌组件)

组件封装–搜索表单 searchForm.vue 可根据需要&#xff0c;参考姓名和工作自行增加更多常用的默认搜索项 <template><div style"padding: 30px; width: 300px"><el-formref"searchFormRef":model"searchData":label-width"…

伽马校正笔记(Gamma Correction)

在数字图像系统中&#xff0c;伽马&#xff08;Gamma&#xff09;是一个重要的但很少被正确理解的特性。它定义了一个像素的数值和对应的实际亮度之间的关系。 人眼感知的亮度和相机“看到”的亮度区别 对于数码相机来说&#xff0c;当检测的光子数增加一倍时&#xff0c;sens…

Win11蓝屏代码IRQL NOT LESS OR EQUAL的处理方法

蓝屏错误IRQL NOT LESS OR EQUAL是用户常见的系统故障了&#xff0c;升级到Win11新系统也遇到了同样的问题&#xff0c;那么Win11蓝屏问题IRQL NOT LESS OR EQUAL要如何解决&#xff1f;下面就来看看小编整理的解决办法。 什么是 IRQL_NOT_LESS_OR_EQUAL 错误&#xff1f; IRQL…

【Docker】Docker入门学习

【Docker】学习docker 1.Docker安装与启动 1.1.安装 【第一步】yum包更新到最新版本 sudo yum update【第二步】安装需要的软件包&#xff0c;yum-util提供的yum-config-manager功能&#xff0c;另外两个是devicemapper驱动依赖的 sudo yum install -y yum-utils device-m…