1、框框横向间隔为:( “界面的总宽度”-“界面每行的控件的宽度” * “每行要现实的列数(这里是3)”) / (“列数 + 1”)
2、框框纵向间隔可以自定义写死
3、每个框框横向摆放的位置是:(框框宽度+间隔宽度)乘以(列号)
4、每个框框纵向摆放的位置为:(框框高度+间隔宽度)乘以(行号) + 顶端间隔[这里是30]
5、每个框框在第几行第几列的算法为: 行号为“框框的序号对列数取商”, 列号为“框框的序号对列取模”
/** 排列根据数组生成的view 根据需要的“列数”,“框框宽度”,“框框高度” */
- (void)rankWithTotalColumns:(int)totalColumns andWithAppW:(int)appW andWithAppH:(int)appH{
//总列数
int _totalColumns = totalColumns;
//view尺寸
CGFloat _appW = appW;
CGFloat _appH = appH;
//横向间隙 (控制器view的宽度 - 列数*应用宽度)/(列数 + 1)
CGFloat margin = (self.view.frame.size.width - (_totalColumns * 85)) / (_totalColumns + 1);
for (int index = 0; index < self.appsArray.count; index++) {
//创建一个小框框//
UIView *appView = [[UIView alloc] init];
appView.backgroundColor = [UIColor redColor];
//创建结束//
//计算框框的位置...行号列号从0开始
//行号
int row = index / totalColumns; //行号为框框的序号对列数取商
//列号
int col = index % totalColumns; //列号为框框的序号对列数取余
CGFloat appX = margin + col * (appW + margin); // 每个框框靠左边的宽度为 (平均间隔+框框自己的宽度)
CGFloat appY = 30 + row * (appH + margin); // 每个框框靠上面的高度为 平均间隔+框框自己的高度
appView.frame = CGRectMake(appX, appY, _appW, _appH);
[self.view addSubview:appView];
}
}
相关文章
- 小驰私房菜_09_应用集成Raw域算法流程
- 【算法学习笔记】堆排序和归并排序、其他几种排序的代码实现、比较和应用(习题)
- Java应用【七】使用Java实现数据结构和算法:排序、查找、图
- 你评论,我赠书~【哈士奇赠书 - 14期】-〖人人都离不开的算法-图解算法应用〗参与评论,即可有机获得
- 推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐
- 基于文心大模型套件ERNIEKit实现文本匹配算法,模块化方便应用落地
- 基于八叉树的拾取算法在游戏中的应用
- 【LeetCode字符串#05】基于个人理解的KMP算法图解,以及应用到strStr()函数实现
- 高手给点建议,如果将电子词典应用的代码优化或者有什么好的算法
- iOS9 News 应用