iOS如何实现九宫格自动生成视图
发表于:2024-09-28 作者:千家信息网编辑
千家信息网最后更新 2024年09月28日,这篇文章主要为大家展示了"iOS如何实现九宫格自动生成视图",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"iOS如何实现九宫格自动生成视图"这篇文章吧。首先
千家信息网最后更新 2024年09月28日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安全错误
数据库的锁怎样保障安全
计算机网络技术春考学什么
多媒体网络技术 教材
黄浦区软件开发培训
网络安全漫画八幅图
读网络安全专硕还是学硕
软件开发企业业务内容
安全的服务器系统 迅雷下载
dnf服务器爆炸
惠普服务器开机亮黄灯
服务器psu灯亮
自学网络技术面试最大的问题
中外文数据库有哪些特点
我的世界网易基岩版怎么开服务器
网络安全课程填空题
中小学网络安全周方案
数据库08
我的世界服务器麦克风
长沙5g网络技术公司
比10小又比4大的数据库
网络安全进校园作文600字
硬件传输数据库
浙江省内服务器
崇明区现代软件开发服务产品介绍
搜点网络技术有限公司怎么样
圣才教育数据库课件
6服务器
mysql 数据库 恢复
linux 服务器并发
超微服务器主板驱动
南宁青秀区软件开发多少钱