iOS经典讲解之UICollectionView

Objective-C入门指南:从环境搭建到实战项目开发 面向对象编程是现代软件开发的核心范式之一,它通过封装、继承和多态等机制组织代码,提升可维护性和复用性。在iOS/macOS生态中,Objective-C作为基于C语言的面向对象语言,其独特的消息传递机制和动态运行时特性,为理解Cocoa Touch框架的底层原理提供了关键视角。掌握Objective-C不仅能帮助开发者深入理解iOS系统框架的设计哲学,还能有效维护和迭代大量存量项目代码,尤其是在处理内存管理、与C/C++库桥接以及调试经典崩溃场景时具有不可替代的价值。对于希望夯实iOS开发基础、进入中大型团 阅读详情

//
//  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


20W射频整流器设计:从ADS仿真到工程实现的全流程解析 射频整流器是一种将高频射频能量转换为直流能量的关键电路,广泛应用于无线能量传输、RFID和环境能量收集等领域。其工作原理基于肖特基二极管的非线性特性,通过匹配网络实现阻抗变换,以最大化能量转换效率。这项技术的核心价值在于解决无线供电系统中的高效能量转换问题,尤其在中等功率应用场景中,如传感器节点和无人机充电站。本文将深入探讨20W射频整流器的设计,涵盖谐波平衡仿真、威尔金森功分网络和热管理等工程实践,帮助工程师从理论过渡到实际应用。 阅读详情

相关推荐

高仿京东商城App完整源码项目实战(含架构解析与开发指南)

前后端如何高效协作?答案是:RESTful + 统一响应格式 + 版本控制京东用户服务的关键接口如下:方法路径描述POST注册POST密码登录POST手机验证码登录GET获取当前用户信息PUT更新个人信息POST登出响应体统一结构:前端只需一套拦截器就能处理所有请求的成功/失败逻辑,大大简化代码。HTTP 状态码也有讲究:状态码含义场景示例200 OK请求成功正常返回数据。

weixin_28729843的博客 768

iOS之流布局UICollectionView全系列教程

iOS流布局UICollectionView系列一——初识与简单使用UICollectionView 一、简介         UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似。简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下几个方面:

LVXIANGAN的专栏 1万+

ETL数据集成案例

一个典型的ETL数据集成案例是将多个来源的数据合并成一个数据集。假设有一个公司,该公司使用一些不同的系统来存储不同部门的数据,例如销售数据存储在一个CRM系统中,财务数据存储在一个ERP系统中,人力资源数据存储在一个HR系统中。为了更好地进行报告和分析,该公司决定将所有这些数据集成到一个数据仓库中。以下是实现这一目标的ETL过程的步骤:提取(Extract):首先,需要从每个系统中提取所需的数据。每个系统可能有不同的数据格式和结构,因此需要编写不同的提取程序或查询来提取数据。

runqu的博客 948

iOS——UICollectionView

UICollectionView基础: 一, UICollectionView简介: UICollectionView是iOS 6.0之后引入的一种UI控件,类似于tableView有相似的代理方法,但UIColletionView的功能更为强大,可以实现瀑布流,根据开发者的喜好去自定义布局。 二, 简单的使用UICollectionView 下面先实现一个简单的九宫格布局来介绍此控件的一些基本属性。 类似于使用tableView,需要实现两个协议。 分别为1UICollectionViewDelegat

chabuduoxs的博客 3950

OCTA-500:用于光学相干断层扫描血管造影研究的视网膜数据集|文献速递-基于生成模型的数据增强与疾病监测应用

数据集提供了丰富的图像和注释,包括两种模态(OCT/OCTA体积)、六种投影类型、四种文本标签(年龄/性别/眼别/疾病)以及七种分割标签(大血管/毛细血管/动脉/静脉/2D FAZ/3D FAZ/视网膜层)。我们介绍了新的 OCTA-500 数据集,该数据集包含来自 500 名受试者的 OCTA 成像,并提供了丰富的图像和标注集。(C) OCTA-500 切片的人工标注示例。图 4. OCTA-500 数据集中文本标签的统计直方图:(a) 性别,(b) 眼别,(c) 年龄,(d) 疾病。

weixin_38594676的博客 1436

麒麟银河操作系统V10下ffmpeg的完整部署指南(兼容Linux系统)

本文提供在麒麟银河操作系统V10上从源码编译部署FFmpeg的完整指南,涵盖环境准备、核心依赖库(如x264)编译、FFmpeg本体配置安装、系统集成及常见问题排查。步骤详细,同样适用于Ubuntu、CentOS等主流Linux发行版,帮助用户打造功能强大的多媒体处理工具链。

weixin_29205061的博客 256

iOS开发 ----- UICollectionView

UICollectionView简介和tableView类似的控件,但更零活,tableView是以行为单位的,而collectionView是item,可大可小,对于复杂的布局来说,更加零活 代理UICollectionViewDataSource UICollectionViewDelegate UICollectionViewDelegateFlowLayout使用方法步骤1. 指定布局//首

xiao333ma的专栏 629

国民技术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),如果

狂想家 2486

【iOS开发】—— UICollectionView的介绍

UICollectionView的简单学习

weixin_50990189的博客 5893

告别TwinCAT:手把手教你用IgH EtherCAT Master在LinuxCNC上搭建实时运动控制平台

本文详细介绍了如何利用IgH EtherCAT Master和LinuxCNC搭建开源实时运动控制平台,替代商业软件TwinCAT。通过分步指南,包括实时Linux环境配置、EtherCAT主站安装、LinuxCNC集成及多轴同步控制实现,帮助开发者构建高性能、低成本的工业自动化解决方案。

weixin_42641741的博客 401

Windows配置L2TP/IPsec连接

Windows 系统的 L2TP/IPsec 功能,通过配置即可构建加密 VPN 通道。

m0_61806534的博客 1668

【iOS】—— UICollectionView基础

一、UICollectionView基础: 1.简介: UICollectionView是iOS6之后引入的一个新的UI控件,在目前的iOS开发中,使用非常广泛。它和UITableView都继承自UIScrollView,但是它比UITableView更加强大,可以根据需要自定义各种各样复杂的布局。 它和UITableView十分相似,并且很多代理方法都十分类,具体的可以看看苹果官方的文档:UICollectionView - Apple Developer 2.特点: (1)系统自带的流水布局支持水平和垂

m0_55124878的博客 5106

出现 Error:Unable to access jarfile xxxx\target\nacos-server.jar 解决方法

Nacos中的 2.x执行步骤如上,如果需要安装下载1.x版本,执行该步骤之后 自动更新下载的是2.x版本 对此如果需要下载安装1.x的版本,可通过如下连接(windows版本)

码农研究僧的博客 5699

【iOS】UICollectionView的基本使用

UICollectionViewLayout是一个layout对象,UICollectionView几乎所有的显示效果都由UICollectionViewLayout负责。UICollectionViewFlowLayout是继承自UICollectionViewLayout的,是官方实现的流水布局效果,是一种非常经典的布局效果,应该也是我们最常用的。itemSize 每个item的大小;minimumLineSpacing 每行最小间距;

m0_63852285的博客 2227

蓝牙模块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.

gitblog_00080的博客 383

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ios_collectionView

目录(?)[+] 目录(?)[-] 经典应用流水布局滚动轮播照片墙 collectionView的元素Cell的使用UICollectionViewLayoutUICollectionViewFlowLayout及自定义layoutsupplementaryView组头组尾DecorationView装饰View装饰整个collectionView的背景它完全由l

Lea__DongYang的博客 475

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

iOS中 蓝牙2.0详解ios蓝牙设备详解 韩俊强的博客

整体布局如下:  程序结构如右图: 每日更新关注:http://weibo.com/hanjunqiang 新浪微博 ========================================================================== 指定根视图:   ? 1 2 3 RootViewController * rootVC

bjx18356163055的博客 1795

iOS瀑布流布局完全指南:从入门到精通CHTCollectionViewWaterfallLayout

UICollectionView自定义布局是iOS开发中实现复杂界面的核心技术之一,而瀑布流布局作为最受欢迎的布局形式,被广泛应用于图片展示、商品陈列等场景。本文将带你全面掌握CHTCollectionViewWaterfallLayout这个强大的瀑布流布局库,从快速集成到深度优化,让你轻松实现媲美Pinterest的视觉效果! ## 1. 功能解析:为什么选择这款瀑布流布局 🚀 CHTC

gitblog_01061的博客 910

iOS MVVM+RAC 从框架到实战

一、前言 很早之前就想写写自己在设计模式方面的心得,但是一直感觉自己是井底之蛙,毕竟在iOS领域越深入越感到自己的无知,心中有着敬畏之心,就更没有自信去写这个东西(你也可以理解是没时间(>﹏<),请原谅我的装逼,嘿嘿). 对于设计模式这个让人又爱又恨的玩意,说来其实简单,但一千个人眼中就有一千种哈姆雷特,说他千变万化确实是事实,而且当你深入其中的时候你真的会上瘾,并乐此不疲! 前几天自己写的...

weixin_33981932的博客 126

从0到1实现聊天应用式视差滚动:MJParallaxCollectionView完全指南

你是否曾惊叹于聊天应用聊天列表或iOS天气应用中那种随着滚动产生的微妙视差效果?当手指滑动屏幕时,列表项中的图片仿佛悬浮在背景上,随着滚动方向产生分层移动——这种视觉体验能显著提升App的交互质感。但实现这一效果往往需要复杂的手势处理和图层计算,让许多开发者望而却步。 本文将带你深入剖析MJParallaxCollectionView的实现原理,通过10分钟快速集成、核心算法解析和5个高级定制技...

gitblog_01182的博客 902

Continue 插件 JetBrains 版:从安装到模型调参的实用指南

Continue 插件是一个面向 JetBrains 系 IDE 的 AI 编程助手,支持 IntelliJ IDEA、PyCharm、WebStorm 等产品。它把内联代码补全、聊天问答、按自然语言改代码、生成测试这些能力放进 IDE,把写代码、读代码和保质量三个阶段里反复出现的低价值工作压缩掉。 ## Continue 插件能力速览 - **内联补全**:输入时出现灰色建议,按 Tab 整

gitblog_00703的博客 616

FMMosaicLayout使用全解析:3个Section示例项目逐行精讲

FMMosaicLayout 是一款可直接接入(drop-in)的 iOS 马赛克布局组件,它继承自 `UICollectionViewLayout`,能把图片自动排成"一大两小"相间的方形马赛克效果,主打简单定制。本文结合官方示例项目中 3 个 Section 的真实代码,带你快速看懂数据源、大小格混合与页眉页脚覆盖这三大核心用法。 ## 为什么用 FMMosaicLayout 做照片墙 📸

gitblog_00124的博客 753

SDCycleScrollView自定义配置详解:从基础样式到高级定制

SDCycleScrollView是一个功能强大的iOS无限循环轮播器,支持图片和文字轮播,是iOS开发中实现自动滚动Banner的终极解决方案。本文将为您全面解析SDCycleScrollView的自定义配置方法,从基础样式设置到高级定制技巧,帮助您快速掌握这个强大的轮播组件。🚀 ## 🔧 基础样式配置 ### 分页控件样式定制 SDCycleScrollView提供了丰富的分页控件配

gitblog_00978的博客 673

2017欢聚时代iOS校招C卷复盘:OC内存、多线程与性能优化高频考点

内存管理是iOS开发的核心基础,理解引用计数、weak表机制和block的copy语义,能有效规避循环引用等经典问题。多线程编程中GCD的队列派发、死锁原理以及RunLoop的事件循环机制,则直接决定App的流畅度与稳定性。这些底层知识不仅贯穿日常工程实践,也是各大厂iOS岗位面试和笔试中的高频考察方向。从Auto Layout的约束优先级到离屏渲染的性能损耗,再到网络层的封装与请求调度,扎实掌握这些技术点能够帮助开发者快速定位线上问题、优化用户体验。本文以欢聚时代2017年校招iOS C卷为线索,完整复盘

weixin_33851177的博客 431

CompactGUI 完整指南:用 Windows 原生压缩免费给游戏瘦身,空间最多省 60%

SSD 装不下 3A 大作,软件文件夹动辄几十 GB——磁盘爆满几乎是每个 Windows 用户的日常。CompactGUI 是一款免费开源工具,它调用 Windows 内置的透明压缩技术,把游戏和程序文件夹在磁盘上"压小",压缩后依然能正常打开、照常运行,无需解压成文件。 ## 为什么压了还能照常运行? CompactGUI 的底层是 Windows 10 引入的 WOF 文件系统驱动。压缩

gitblog_00595的博客 291
上一篇: iOS经典讲解之妙用UITextView
下一篇: iOS经典讲解之多线程应用场景
刘新林
博客等级 码龄11年 72粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值