iOS如何实现九宫格自动生成视图
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了"iOS如何实现九宫格自动生成视图",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"iOS如何实现九宫格自动生成视图"这篇文章吧。首先
千家信息网最后更新 2026年11月02日iOS如何实现九宫格自动生成视图
这篇文章主要为大家展示了"iOS如何实现九宫格自动生成视图",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"iOS如何实现九宫格自动生成视图"这篇文章吧。
首先肯定是用一个类来管理整个模块的,所以创建一个UISodokuView类继承于UIScrollView:--为什么是scollView?--因为当需要添加的控件数量较大时,显然会超出手机屏幕范围,只有用scrollView才能完全显示,也就是说,只要用户提供了单个控件的frame、控件数量以及每一行控件的个数,就能够确定UIScrollView的contentSize大小,从而添加。
UISodokuView类
.h文件
@interface UISodokuView : UIScrollView//基础控件的frame@property(nonatomic,assign)CGRect itemFrame;//要添加的控件数量@property(nonatomic,assign)NSInteger itemsNumber;//每一行控件数量@property(nonatomic,assign)NSInteger itemsNumberInOneLine;//存储控件的array@property(nonatomic,strong)NSMutableArray *itemsArray;//scrollView宽度@property(nonatomic,assign)NSInteger scrollViewWidth;//scrollView高度@property(nonatomic,assign)NSInteger scrollViewHeight;//初始化,但并没有添加控件-(instancetype)initWithItemFrame:(CGRect)frame andItemsNumber:(NSInteger)itemsNumber andItemsNumberInOneLine:(NSInteger)itemsInOneLine;
这里我添加到scrollView上面每一个控件是一个默认背景为白色的UIView对象,并存储到itemsArray里面,用户想让每一个控件显示什么可以通过获取数组对象进行再添加。
.m文件
@implementation UISodokuView-(instancetype)initWithItemFrame:(CGRect)frame andItemsNumber:(NSInteger)itemsNumber andItemsNumberInOneLine:(NSInteger)itemsInOneLine{ self = [super init]; if (self) { //初始化 _itemsArray = [NSMutableArray array]; _itemFrame = frame; _itemsNumber = itemsNumber; _itemsNumberInOneLine = itemsInOneLine; self.frame = CGRectZero; } [self layoutModule]; return self;}-(void)layoutModule{ //获取item宽高和横向纵向间距 NSInteger itemWidthGap = _itemFrame.origin.x; NSInteger itemHeightGap = _itemFrame.origin.y; NSInteger width = _itemFrame.size.width; NSInteger height = _itemFrame.size.height; //容器宽度 _scrollViewWidth = itemWidthGap * (_itemsNumberInOneLine + 1) + width * _itemsNumberInOneLine; //总行数 NSInteger numberOfLines = 0; if (_itemsNumber%_itemsNumberInOneLine == 0) { numberOfLines = _itemsNumber/_itemsNumberInOneLine; }else{ numberOfLines = _itemsNumber/_itemsNumberInOneLine + 1; } _scrollViewHeight = itemHeightGap*(numberOfLines + 1) + height*numberOfLines - 2; //确定scrollView的frame,默认y轴边距200 self.frame = CGRectMake(0, 200, _scrollViewWidth,height + itemHeightGap*2); self.contentSize = CGSizeMake(_scrollViewWidth, _scrollViewHeight); self.scrollEnabled = YES; self.backgroundColor = [UIColor lightGrayColor]; //创建并添加控件 NSInteger line = 1; NSInteger row = 1; for (int i = 1;i <= _itemsNumber ; i++) { UIView *item = [[UIView alloc] initWithFrame:_itemFrame]; item.backgroundColor = [UIColor whiteColor]; [_itemsArray addObject:item]; [self addSubview:item]; //判断处于第几行 line = i/_itemsNumberInOneLine + 1; //判断处于第几列 row = i % _itemsNumberInOneLine; if (row == 0) { row = _itemsNumberInOneLine; line -= 1; } item.frame = CGRectMake(row*itemWidthGap + (row-1)*width, line*itemHeightGap + (line-1)*height, width, height); }}这里有些数据是默认的:
--scrollView的可视范围:宽度由控件frame确定,高度默认显示一行控件,可滚动,--scrollView位置默认左边距为0,上边距为200;
这些都可由用户根据自己情况作更改,所以相当方便。
一下是一个使用例子:
UISodokuView * sv = [[UISodokuView alloc] initWithItemFrame:CGRectMake(10, 10, 100, 120) andItemsNumber:10 andItemsNumberInOneLine:3]; [self.view addSubview:sv];
以上是"iOS如何实现九宫格自动生成视图"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
控件
数量
九宫
自动生成
视图
生成
一行
内容
宽度
用户
篇文章
对象
文件
范围
高度
存储
学习
帮助
较大
上边
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技工作委员会主任
互联网和科技创新
互联网科技资迅
互联网与科技发展
为想互联网科技
礼当家互联网科技
世界互联网领先科技成果
亿账通互联网科技
互联网金融 科技创新
上海亿帐通互联网科技
互联网巨头投资的硬核科技
互联网科技中介
栖莱科技互联网股份有限公司
南平创想时代互联网科技有限公司
千方科技属于互联网企业吗
深圳育鹏互联网科技有限公司招聘
互联网科技年终奖
昆明中奇联合互联网科技
悟空问答互联网科技
重庆科技产业互联网有哪些
涨乐互联网科技
友谊互联网络科技
互联网科技logo
顺网科技2021年互联网排名
阿里互联网科技公司
阿大互联网科技有限公司
互联网5g黑科技有哪些
电子科技大学互联网创业大赛
现代互联网科技公司
现代科技的标志之一的互联网