//
// RootViewController.m
// LessonUICollectionView
//
#import "RootViewController.h"
@interface RootViewController () <UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout>
//UICollectionViewDelegateFlowLayout该类遵守了UICollectionViewDelegate
// 实际上UICollectionViewDelegateFlowLayout这个协议是UICollectionViewDelegate的子协议
@end
@implementation RootViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self addSubViews];
}
// 创建一个集合视图 collectionView
- (void)addSubViews
{
// 初始化UICollectionView需要一个独立的类UICollectionViewFlowLayout来设置其布局
//UICollectionViewLayout是一个抽象类 本身没有具体功能 其功能是由其子类UICollectionViewFlowLayout来实现的
// Item 布局(网格状 布局)
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
// 行边距(相对于 上下滑动) 如果左右滑动 就是列边距
layout.minimumLineSpacing = 30;
// 列边距(相对于 上下滑动) 如果左右滑动 就是行边距
layout.minimumInteritemSpacing = 30;
// 设置Item的宽高
layout.itemSize = CGSizeMake(150, 200);
// 设置滑动方向(默认是上下滑动的)
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
// 设置表头 宽度不起作用
layout.headerReferenceSize = CGSizeMake(0, 100);
// 设置表尾 宽度不起作用
layout.footerReferenceSize = CGSizeMake(0, 100);
// 设置内边距
layout.sectionInset = UIEdgeInsetsMake(20, 20, 20, 20);
// 用上面的layout布局初始化集合视图
UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:[UIScreen mainScreen].bounds collectionViewLayout:layout];
//设置代理
collectionView.dataSource = self;
collectionView.delegate = self;
// collectionView默认是黑的
collectionView.backgroundColor = [UIColor whiteColor];
// 显示视图
[self.view addSubview:collectionView];
[collectionView release];
[layout release];
// 注册你要用的cell
//Identifier 重用标示符一定要和下面的一致
//registerClass:<#(Class)#> cell的类 系统的或你自定义的cell所属类
[collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];
// 注册表头
[collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"MyHeaderView"];
// 注册表尾
[collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"MyFooterView"];
}
#pragma mark ------代理方法------
// 必须实现的两个方法 跟tableView一样
// 返回每个分区的Item数
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 5;
}
// 返回每个Item的方法
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
// 返回每个Item的方法
// 这个方法里面包括了之前tableViewCell写的那一大堆 不需要再alloc创建,如果集合中有会取出复用如果没有他会自动创建不需要自己再创建
// 必须要注册cell
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
// 系统没有像tableView一样 给咱们 提供布局方式
// 要使用UICollectionViewCell一般都是自定义再使用 跟tableView一样所有自定义控件都要加到contentView上
cell.contentView.backgroundColor = [UIColor redColor];
return cell;
}
// 返回分区数跟tableView一样 默认一个
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
// 设置表头 表尾 同一个代理方法来是实现
-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
// 有参数kind判断返回表头还是表尾
// 因为参数是字符串的 判断相同不能等号要用方法isEqualToString:
if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
// 返回表头 需要去复用集合中得到
UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"MyHeaderView" forIndexPath:indexPath];
// 加颜色
headerView.backgroundColor = [UIColor greenColor];
return headerView;
} else {
// 返回表尾
UICollectionReusableView *footerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"MyFooterView" forIndexPath:indexPath];
footerView.backgroundColor = [UIColor yellowColor];
return footerView;
}
}
@end
相关推荐
高仿京东商城App完整源码项目实战(含架构解析与开发指南)
前后端如何高效协作?答案是:RESTful + 统一响应格式 + 版本控制京东用户服务的关键接口如下:方法路径描述POST注册POST密码登录POST手机验证码登录GET获取当前用户信息PUT更新个人信息POST登出响应体统一结构:前端只需一套拦截器就能处理所有请求的成功/失败逻辑,大大简化代码。HTTP 状态码也有讲究:状态码含义场景示例200 OK请求成功正常返回数据。
iOS之流布局UICollectionView全系列教程
iOS流布局UICollectionView系列一——初识与简单使用UICollectionView 一、简介 UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似。简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下几个方面:
ETL数据集成案例
一个典型的ETL数据集成案例是将多个来源的数据合并成一个数据集。假设有一个公司,该公司使用一些不同的系统来存储不同部门的数据,例如销售数据存储在一个CRM系统中,财务数据存储在一个ERP系统中,人力资源数据存储在一个HR系统中。为了更好地进行报告和分析,该公司决定将所有这些数据集成到一个数据仓库中。以下是实现这一目标的ETL过程的步骤:提取(Extract):首先,需要从每个系统中提取所需的数据。每个系统可能有不同的数据格式和结构,因此需要编写不同的提取程序或查询来提取数据。
iOS——UICollectionView
UICollectionView基础: 一, UICollectionView简介: UICollectionView是iOS 6.0之后引入的一种UI控件,类似于tableView有相似的代理方法,但UIColletionView的功能更为强大,可以实现瀑布流,根据开发者的喜好去自定义布局。 二, 简单的使用UICollectionView 下面先实现一个简单的九宫格布局来介绍此控件的一些基本属性。 类似于使用tableView,需要实现两个协议。 分别为1UICollectionViewDelegat
OCTA-500:用于光学相干断层扫描血管造影研究的视网膜数据集|文献速递-基于生成模型的数据增强与疾病监测应用
数据集提供了丰富的图像和注释,包括两种模态(OCT/OCTA体积)、六种投影类型、四种文本标签(年龄/性别/眼别/疾病)以及七种分割标签(大血管/毛细血管/动脉/静脉/2D FAZ/3D FAZ/视网膜层)。我们介绍了新的 OCTA-500 数据集,该数据集包含来自 500 名受试者的 OCTA 成像,并提供了丰富的图像和标注集。(C) OCTA-500 切片的人工标注示例。图 4. OCTA-500 数据集中文本标签的统计直方图:(a) 性别,(b) 眼别,(c) 年龄,(d) 疾病。
麒麟银河操作系统V10下ffmpeg的完整部署指南(兼容Linux系统)
本文提供在麒麟银河操作系统V10上从源码编译部署FFmpeg的完整指南,涵盖环境准备、核心依赖库(如x264)编译、FFmpeg本体配置安装、系统集成及常见问题排查。步骤详细,同样适用于Ubuntu、CentOS等主流Linux发行版,帮助用户打造功能强大的多媒体处理工具链。
iOS开发 ----- UICollectionView
UICollectionView简介和tableView类似的控件,但更零活,tableView是以行为单位的,而collectionView是item,可大可小,对于复杂的布局来说,更加零活 代理UICollectionViewDataSource UICollectionViewDelegate UICollectionViewDelegateFlowLayout使用方法步骤1. 指定布局//首
国民技术N32G45X低功耗问题之更改全局变量和栈在RAM中的地址
最近项目中用的MCU是国民技术的N32G45X,MCU的资源很丰富,RAM也很大,配套的库和例程也比较全,用起来还是不错的,但是在调试低功耗的时候还是费了不少劲。 首先由于项目低功耗需要,只能选择停机模式2(STOP2)。根据数据手册的描述,在此模式下外部低速时钟开启, RTC运行, R-SRAM保持,所有I/O状态保持,独立看门狗处于关闭状态,25℃的条件下电流为10个微安。 用的这款MCU的RAM是144KB,分为SRAM(128KB)和R-SRAM( Retention SRAM – 16KB),如果
【iOS开发】—— UICollectionView的介绍
UICollectionView的简单学习
告别TwinCAT:手把手教你用IgH EtherCAT Master在LinuxCNC上搭建实时运动控制平台
本文详细介绍了如何利用IgH EtherCAT Master和LinuxCNC搭建开源实时运动控制平台,替代商业软件TwinCAT。通过分步指南,包括实时Linux环境配置、EtherCAT主站安装、LinuxCNC集成及多轴同步控制实现,帮助开发者构建高性能、低成本的工业自动化解决方案。
Windows配置L2TP/IPsec连接
Windows 系统的 L2TP/IPsec 功能,通过配置即可构建加密 VPN 通道。
【iOS】—— UICollectionView基础
一、UICollectionView基础: 1.简介: UICollectionView是iOS6之后引入的一个新的UI控件,在目前的iOS开发中,使用非常广泛。它和UITableView都继承自UIScrollView,但是它比UITableView更加强大,可以根据需要自定义各种各样复杂的布局。 它和UITableView十分相似,并且很多代理方法都十分类,具体的可以看看苹果官方的文档:UICollectionView - Apple Developer 2.特点: (1)系统自带的流水布局支持水平和垂
出现 Error:Unable to access jarfile xxxx\target\nacos-server.jar 解决方法
Nacos中的 2.x执行步骤如上,如果需要安装下载1.x版本,执行该步骤之后 自动更新下载的是2.x版本 对此如果需要下载安装1.x的版本,可通过如下连接(windows版本)
【iOS】UICollectionView的基本使用
UICollectionViewLayout是一个layout对象,UICollectionView几乎所有的显示效果都由UICollectionViewLayout负责。UICollectionViewFlowLayout是继承自UICollectionViewLayout的,是官方实现的流水布局效果,是一种非常经典的布局效果,应该也是我们最常用的。itemSize 每个item的大小;minimumLineSpacing 每行最小间距;
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
antd Modal.destroyAll 详解:在路由切换时自动销毁确认对话框
`Modal.destroyAll()` 是 Ant Design Modal 提供的静态方法,用于一次性销毁所有通过命令式 API(`Modal.confirm` / `Modal.info` / `Modal.success` / `Modal.error` / `Modal.warning`)弹出的确认窗。本文围绕官方 Demo「[销毁确认对话框](https://link.gitcode.
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
ios_collectionView
目录(?)[+] 目录(?)[-] 经典应用流水布局滚动轮播照片墙 collectionView的元素Cell的使用UICollectionViewLayoutUICollectionViewFlowLayout及自定义layoutsupplementaryView组头组尾DecorationView装饰View装饰整个collectionView的背景它完全由l
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
iOS中 蓝牙2.0详解ios蓝牙设备详解 韩俊强的博客
整体布局如下: 程序结构如右图: 每日更新关注:http://weibo.com/hanjunqiang 新浪微博 ========================================================================== 指定根视图: ? 1 2 3 RootViewController * rootVC
iOS瀑布流布局完全指南:从入门到精通CHTCollectionViewWaterfallLayout
UICollectionView自定义布局是iOS开发中实现复杂界面的核心技术之一,而瀑布流布局作为最受欢迎的布局形式,被广泛应用于图片展示、商品陈列等场景。本文将带你全面掌握CHTCollectionViewWaterfallLayout这个强大的瀑布流布局库,从快速集成到深度优化,让你轻松实现媲美Pinterest的视觉效果! ## 1. 功能解析:为什么选择这款瀑布流布局 🚀 CHTC
iOS MVVM+RAC 从框架到实战
一、前言 很早之前就想写写自己在设计模式方面的心得,但是一直感觉自己是井底之蛙,毕竟在iOS领域越深入越感到自己的无知,心中有着敬畏之心,就更没有自信去写这个东西(你也可以理解是没时间(>﹏<),请原谅我的装逼,嘿嘿). 对于设计模式这个让人又爱又恨的玩意,说来其实简单,但一千个人眼中就有一千种哈姆雷特,说他千变万化确实是事实,而且当你深入其中的时候你真的会上瘾,并乐此不疲! 前几天自己写的...
从0到1实现聊天应用式视差滚动:MJParallaxCollectionView完全指南
你是否曾惊叹于聊天应用聊天列表或iOS天气应用中那种随着滚动产生的微妙视差效果?当手指滑动屏幕时,列表项中的图片仿佛悬浮在背景上,随着滚动方向产生分层移动——这种视觉体验能显著提升App的交互质感。但实现这一效果往往需要复杂的手势处理和图层计算,让许多开发者望而却步。 本文将带你深入剖析MJParallaxCollectionView的实现原理,通过10分钟快速集成、核心算法解析和5个高级定制技...
Continue 插件 JetBrains 版:从安装到模型调参的实用指南
Continue 插件是一个面向 JetBrains 系 IDE 的 AI 编程助手,支持 IntelliJ IDEA、PyCharm、WebStorm 等产品。它把内联代码补全、聊天问答、按自然语言改代码、生成测试这些能力放进 IDE,把写代码、读代码和保质量三个阶段里反复出现的低价值工作压缩掉。 ## Continue 插件能力速览 - **内联补全**:输入时出现灰色建议,按 Tab 整
FMMosaicLayout使用全解析:3个Section示例项目逐行精讲
FMMosaicLayout 是一款可直接接入(drop-in)的 iOS 马赛克布局组件,它继承自 `UICollectionViewLayout`,能把图片自动排成"一大两小"相间的方形马赛克效果,主打简单定制。本文结合官方示例项目中 3 个 Section 的真实代码,带你快速看懂数据源、大小格混合与页眉页脚覆盖这三大核心用法。 ## 为什么用 FMMosaicLayout 做照片墙 📸
SDCycleScrollView自定义配置详解:从基础样式到高级定制
SDCycleScrollView是一个功能强大的iOS无限循环轮播器,支持图片和文字轮播,是iOS开发中实现自动滚动Banner的终极解决方案。本文将为您全面解析SDCycleScrollView的自定义配置方法,从基础样式设置到高级定制技巧,帮助您快速掌握这个强大的轮播组件。🚀 ## 🔧 基础样式配置 ### 分页控件样式定制 SDCycleScrollView提供了丰富的分页控件配
2017欢聚时代iOS校招C卷复盘:OC内存、多线程与性能优化高频考点
内存管理是iOS开发的核心基础,理解引用计数、weak表机制和block的copy语义,能有效规避循环引用等经典问题。多线程编程中GCD的队列派发、死锁原理以及RunLoop的事件循环机制,则直接决定App的流畅度与稳定性。这些底层知识不仅贯穿日常工程实践,也是各大厂iOS岗位面试和笔试中的高频考察方向。从Auto Layout的约束优先级到离屏渲染的性能损耗,再到网络层的封装与请求调度,扎实掌握这些技术点能够帮助开发者快速定位线上问题、优化用户体验。本文以欢聚时代2017年校招iOS C卷为线索,完整复盘
CompactGUI 完整指南:用 Windows 原生压缩免费给游戏瘦身,空间最多省 60%
SSD 装不下 3A 大作,软件文件夹动辄几十 GB——磁盘爆满几乎是每个 Windows 用户的日常。CompactGUI 是一款免费开源工具,它调用 Windows 内置的透明压缩技术,把游戏和程序文件夹在磁盘上"压小",压缩后依然能正常打开、照常运行,无需解压成文件。 ## 为什么压了还能照常运行? CompactGUI 的底层是 Windows 10 引入的 WOF 文件系统驱动。压缩
768



被折叠的 条评论
为什么被折叠?



