iOS之UICollectionView自定义布局

iOS 自定义UICollectionViewLayout实现瀑布流 前言hihi,勇敢的小伙伴儿们大家好,很高兴今天又能更新了,首先照例说一下学习这个瀑布流的人生感悟(一本正经)。在2015年的时候我已经了解瀑布流这个概念了,也知道是用UICollectionView来实现的,但是有意思的是我从业几年来,从未在项目中真正实践过,所以我就一!直!没!学!但!是!在若干年后的今天,我们项目中要使用瀑布流的布局。嗯,这时候知道知识的重要性了,技多不压身,多学一点是一点儿... 阅读详情

UICollectionView基础

  • UICollectionViewFlowLayout:视图布局对象(流水布局:一行排满,自动排到下行),继承自UICollectionViewLayout。UICollectionViewLayout内有一个collectionView属性,所有的视图布局对象都继承自UICollectionViewLayout。
  • 若我们要自定义布局对象,我们一般继承UICollectionViewFlowLayout,然后重写里面的一些方法就可以了。
  • 需要实现三个协议;UICollectionViewDataSource(数据源)、UICollectionViewDelegateFlowLayout(视图布局),自定义布局需要实现UICollectionViewDataSource、UICollectionViewDelegate两个协议即可。
一、自定义线性布局
  • 首先要继承与流水布局UICollectionViewFlowLayout
#import <UIKit/UIKit.h>

@interface LineCollectionViewLayout : UICollectionViewFlowLayout

@end
  • 重写相应的方法
#import "LineCollectionViewLayout.h"

@implementation LineCollectionViewLayout

- (instancetype)init{
    if (self = [super init]) {
    }
    return self;
}

/**
 * 用来做布局的初始化操作(不建议在init方法中进行布局的初始化操作)
 - 注意:一定要调用[super prepareLayout]
 */
- (void)prepareLayout{
    [super prepareLayout];
    // 水平滚动
    self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
    // 设置内边距
    CGFloat inset = (self.collectionView.frame.size.width - self.itemSize.width) * 0.5;
    self.sectionInset = UIEdgeInsetsMake(0, inset, 0, inset);
}

/**
 * 这个方法的返回值是一个数组(数组里面存放着rect范围内所有元素的布局属性)
 * 这个数组中存放的都是UICollectionViewLayoutAttributes对象
 * 这个方法的返回值决定了rect范围内所有元素的排布(frame)*/
/**
 UICollectionViewLayoutAttributes *attrs;
 1.一个cell对应一个UICollectionViewLayoutAttributes对象
 2.UICollectionViewLayoutAttributes对象决定了cell的frame
 */
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect{
    // 获得super已经计算好的布局属性
    NSArray *array = [<
【iOS】关于 UICollectionView 的自定义布局 闲来没事,做了个 UICollectionView 的圆形布局,效果图如下 #控制器代码如下 // // ViewController.m // CollectionViewTest // // Created by 黄瑞 on 2017/5/24. // Copyright © 2017年 CoderHuang. All rights reserved. // #import "ViewController.h" #import "MyLayout.h" #import "MyCollecti 阅读详情

相关推荐

iOS - UICollectionView 自定义布局之风火轮[译] (原版为swift,我这里的实现改为OC)

现在有许多极具创造力的网站,几周前我碰巧浏览到一个名为Form Follows Function的网站,上面有各种交互动画。其中最吸引我的是网站上的导航转轮,转轮由各种交互体验海报组成。原文:UICollectionView Custom Layout Tutorial: A Spinning Wheel本教程将讲解如何使用自定义的 UICollectionViewFlowLayout 来再现那个导

乐事派的专栏 2355

【IOS 开发学习总结-OC-57】★UI之UICollectionView 与UICollectionViewController

【IOS 开发学习总结-OC-57】UI之UICollectionView 与UICollectionViewControllerUICollectionViewUICollectionView直观上非常像一个多列的表格控件。——iBooks 就是个UICollectionView应用。UICollectionView不仅是多列表格,我们可以借助自定义布局,对UICollectionView进行任意

Albert的专栏 1805

UICollectionView(二)自定义布局UICollectionViewLayout

创建自定义布局 在开始创建自定义布局之前,首先需要考虑是否必要,下列情况需要考虑使用自定义布局: 1:布局你想要的界面,并不像网格或者基于线程的布局效果。或者需要滚动不止一个方向。 2:你想要频繁改变所有cell的位置,这可能比创建自定义布局有更多的工作,主要是修改存在的流动布局(flow layout ) 好消息是,从API角度来看,实现自定义布局并不困难,最困难的部分是实现计算来确定布...

欢迎来到Jack的程序世界 2024

iOS UICollectionView学习之二,纯代码实现布局,纯代码实现添加Section Header头部视图和 Section Footer尾部视图

iOS UICollectionView学习之二,纯代码实现布局,纯代码实现添加头部视图跟尾部视图,Header和footer 1、首先看下整个Demo的整体结构:如下图 2、直接上代码 1.自定义单元格类----------MyCell.h  里面添加 @interface MyCell : UICollectionViewCell @property(s

万里初心 1万+

iOS瀑布流布局

前言瀑布流布局是比较流行的一种网站页面和手机App布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。最早采用此布局的网站是Pinterest,逐渐在国内流行开来,目前很多小清新网站和手机App基本都为此类风格。瀑布流对于图片的展现,是高效而具有吸引力的,它有如下优点 有效的降低了界面复杂度,节省了空间。 对触屏设备来说,交互方式更符合直觉,在移动

宿命 宽恕 轮回 1287

使用UICollectionView和UITableView混合布局,完成简单天气demo

天气Demo最终效果如下: UICollectionView和UITableView是很类似的~ 上一节我做的UITableView学好的话,这节的混合布局就会很容易。 1.首先再做布局的时候,要学会分类,先分好模块,再针对模块来做会更清晰和简单 2.在这个天气Demo里View分为两块:上面用UITableView自定义cell来实现,下面的用UICollectionView的c

Sara_Tuan的博客 2251

iOS 瀑布流之栅格布局

代码地址如下:http://www.demodashi.com/demo/14760.html 一 、效果预览 二、确定需求 由下面的需求示意图可知模块的最小单位是正方形,边长是屏幕宽除去边距间隔后的四等份,而每个模块的样式有小正方形(1:1)、大正方形(2:2)、横长方形(2:1)、纵长方形(1:2),动态的根据服务器下发模块样式绘制布局,可以横向滑动,限定为两行的高度。 注意:上面的示...

findhappy117的博客 569

UICollectionView 不同大小Cell 等间距的实现

在IOS项目中有时会用到UICollectionView控件,大家应该都不太陌生,即便有没用过的同学,看一下教程也能轻松的掌握。不过要实现cell大小不同,又要等间距,应该怎么做呢?如下图: 一、首先需要创建EqualSpaceFlowLayout继承UICollectionViewFlowLayout,如下面的代码: #import @protocol EqualSpa

追随我心的专栏 1万+

横向分页滚动的UICollectionView,cell左右排版

做IMl聊天,实现自定义表情功能的时候,需要实现微信聊天时那样的表情排版,主要要实现collectionView能横向滑动cell左右排版。默认的cell排版方向是跟随滚动方向的,例如竖向滚动的话,cell的排版是从左到右、从上到下;横向滚动的话,cell是从上到下、然后从左到右。那么要实现collectionView横向滚动,cell从左到右、从上到下的排版,只需要自定义重写下collectio

浅浅的博客 8404

UICollectionView 添加/删除动画

要实现UICollectionView在添加或删除一项是放大缩小动画。 自定义UICollectionViewFlowLayout 创建子类MyChosenFlowLayout 继承自 UICollectionViewFlowLayout #import <UIKit/UIKit.h> @interface MyChosenFlowLayout : UICollectionViewFlowLayout @property (nonatomic, assign) NSInteger ad.

Lydia的博客 2631

iOS开发:设置UICollectionView不同大小的item的方法

在iOS开发过程中,UICollectionView的使用作为iOS开发者来说都不陌生,但是要想完美的玩转UICollectionView的所有使用的技巧,还是需要了解很多的。本篇博文来分享一下关于UICollectionView设置不同大小item的方法,为的是迎合产品的需求,方便记录为了以后查看使用,分享给有需要的人。 设置不同大小的collectionview的item的方法也很简单,只是...

全沾软贱开发攻城狮 1万+

56、iOS开发:UICollectionView的使用与自定义布局

本文详细介绍了iOS开发中UICollectionView的使用与自定义布局技巧。内容涵盖UICollectionView的基础用法,包括单元格和补充视图的配置、单元格的删除与重新排列操作,以及如何通过子类化UICollectionViewFlowLayout和UICollectionViewLayout实现自定义布局。此外,还深入讲解了装饰视图的创建和定制方法,帮助开发者打造独特而灵活的用户界面。

fox11的博客 103

6、使用 UICollectionView 实现更好的布局

本文详细介绍了如何在 iOS 开发中使用 UICollectionView 实现自定义布局,重点讲解了 ContactsCollectionViewLayout 的实现过程,包括布局预计算、核心方法重写以及性能优化等内容。同时,文章还提供了拓展思路,帮助开发者创建更灵活、更强大的布局方案。

nokia的博客 70

ORCAD 层次化原理图使用TCL获取位号的方法

orcad tcl 获取occurrence位号的方法。

m0_46675718的博客 1126

DenseNet训练实践

在Cifar10上训练DenseNet,复现DenseNet论文的结果是后面两篇分析工作的基础,因此本系列的第一篇,将首先讨论深度学习的训练过程中的几个方面: 1. 数据集 1.1 Cifar10数据集 Cifar10数据集有6万张32X32的图片,是一个小型的数据集,但数据的复杂度足够,下图来自DenseNet论文,可以看出,不用数据增强的话,ResNet的正确率也很难超过90%,因而足以用来验...

一蓑烟雨任平生 1万+

进程间通信的七种方法实战演示!值得收藏!

线程和进程间的通讯(Inter-Process Communication, IPC)是操作系统中的一个重要概念,用于实现不同进程或同一进程中的不同线程之间的数据交换和协调。以下是几个常见的进程间通信的方式:管道、消息队列、共享内存、信号、套接字、信号量、文件映射

十年饮冰,难凉热血,保持热爱,奔赴星海! 2816

UDS 诊断 - CommunicationControl(通信控制)(0x28)服务 诊断

字节参数名称字节值#1CommunicationControl(通信控制)请求SID0x28#2#3communicationType(通信类型)#4nodeIdentificationNumer(节点标识符)(高位字节)controlType 为 0x04 或 0x05 时,使用该参数#5nodeIdentificationNumer(节点标识符)(低位字节)controlType 为 0x04 或 0x05 时,使用该参数。

耳朵东金子千的博客 1819

Global Mapper与ArcGIS双剑合璧:自动化与半自动矢量化提取地物轮廓实战

本文详细介绍了如何结合Global Mapper的自动化批量提取与ArcGIS的半自动精细修整功能,高效完成地物轮廓矢量化工作。通过实战案例,阐述了利用Global Mapper快速抓取初步轮廓,再借助ArcGIS的ArcScan等工具进行精细化编辑和优化的完整工作流,有效提升地理信息数据处理效率。

weixin_29284657的博客 119

Python 爬虫实战:爬取 B 站 UP 主投稿数据,分析更新频率与粉丝互动

摘要:本文基于Python技术实现B站UP主投稿数据的自动化爬取与分析。通过解析B站WBI签名机制和API接口,获取UP主视频的标题、播放量、点赞数等核心数据。采用时间序列分析统计更新频率,结合相关性分析挖掘内容特征与粉丝互动的关联。结果显示编程类视频播放量最高,10-20分钟时长的视频表现最佳,投币数与播放量相关性达0.92。文章详细介绍了接口分析、反爬应对等关键技术,为内容创作者优化策略提供数据支持,同时强调遵守平台规范的爬取原则。

2503_91057718的博客 1535

【25届数字IC秋招总结】面试经验13——豪威科技面试

25届数字ic面试记录———豪威科技

lalala0635的博客 362

高通SDX55平台:5G速率问题排查分析方法

和大家分享一下高通5G平台5G速率问题排查分析方法。

四儿家的小祖宗的博客 5219

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Swift3.0基本语法02
下一篇: iOS之UITableView设置全屏分隔线
ShmimyCoder
博客等级 码龄10年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值