iOS如何实现九宫格自动生成视图
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要为大家展示了"iOS如何实现九宫格自动生成视图",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"iOS如何实现九宫格自动生成视图"这篇文章吧。首先
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
北京国电通网络技术...
手机软件开发来电咨询
软件开发结构化和圆形化的关系
腾讯云服务器虚拟化cpu
电脑必须用网络安全模式启动
ipad登陆哔哩哔哩服务器游戏
部队网络安全制度
江干区软件开发定制公司
破坏数据库
我的世界bc数据库怎么用
数据库中的数据采用什么模型
网络安全竞答web开头
怎么筛选数据库中重复的内容
重庆王家庄大数据库
乳腺图像数据库面向对象
笑话视频软件开发
阿里云服务器突然很慢
人型服务器
乌鲁木齐网络技术产品介绍
网络安全就业前景女生
网络安全大赛靠什么挣钱
网络安全建设哪里有
速达附加数据库分区有问题
数据库时间筛选
成都博思电脑软件开发公司
中国商务部投资数据库
双11数据库峰值多少
每日考勤设计数据库
数据库创建索引少
mysql创建空间数据库