iOS如何实现九宫格自动生成视图
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要为大家展示了"iOS如何实现九宫格自动生成视图",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"iOS如何实现九宫格自动生成视图"这篇文章吧。首先
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
济南软件开发怎么样
威海联通dns服务器地址
网络工程和网络安全一样吗
db2备份还原数据库备份
网络技术挑战赛浙大
河北旧服务器回收云服务器
初中学生网络安全的重要性
数据库定义单值约束
正规的浪潮服务器店面在哪里
c 监控sql数据库变化
天津销售软件开发
国产服务器设备厂商对比分析
软件开发人员考核办法
菲律宾软件开发待遇6
网络安全设计要考虑的需求
r语言怎么筛选时间数据库
数据库的重组和重构
网络安全宣传画幼儿园作业
suma服务器安装centos
石基酒店管理系统是什么数据库
two将于本月30日关闭服务器
远程监控服务器软件
软件开发培训学校三八妇女节
学网络安全技术怎么样
rust服务器直连前缀
第七届网络安全宣传周班会
在服务器建一个共享文件夹
石河子服务器设备维保费用
共享服务器优势
软件开发 结项 制度