文档章节

iOS应用九宫格算法

哈哈8066
 哈哈8066
发布于 2015/03/06 20:40
字数 392
阅读 181
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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];
    }
}

上一篇: UIView复习
哈哈8066
粉丝 3
博文 46
码字总数 13922
作品 0
浦东
程序员
私信 提问
加载中
请先登录后再评论。
IOS8开发视频教程之Swift实战UI入门教程

IOS8开发视频教程之:基于Swift实战UI从入门到精通(5大项目、深入解析拉手团购项目) 课程讲师:朱启文 课程分类:IOS 适合人群:初级 课时数量:81课时 用到技术:Swift、iOS8 涉及项目:移动...

xiarilove
2014/12/23
104
0
IOS8开发视频教程之:基于Swift实战UI从入门到精通

IOS8开发视频教程之:基于Swift实战UI从入门到精通(5大项目、深入解析拉手团购项目) 课程讲师:朱启文 课程分类:IOS 适合人群:初级 课时数量:81课时 用到技术:Swift、iOS8 涉及项目:移动...

mianhuatang
2014/12/22
39
0
自定义控件相关

https://www.jianshu.com/p/6d1d070f58df 仿天猫、淘宝的侧滑菜单栏 https://www.jianshu.com/p/c8b75eb6a465 iOS 轮播图的实现逻辑(四种方法) https://www.jianshu.com/p/89938c8f7ea0 使......

iOS_愛OS
2018/09/18
0
0
黑马程序员终于又开公开课了------炫酷IOS瀑布流

报名地址:http://open.itheima.com/ios/2-12.html?0324nch 【课程简介】 布流布局是在移动开发中非常实用的布局,尤其频繁出现在电商类应用中。对一般的九宫格布局,它能给用户呈现不一般的...

小梦想家
2015/03/24
94
0
OC_九宫格布局工具

实现基于: iOS Masonry九宫格布局 - 一行代码实现九宫格 demo点这里: 点击:【PYShadowAndCornerReadiusViewController】 以后你可能会这样布局九宫格 注意 @warning item自适应宽高 itemSi...

LiYaoPeng
2018/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

redis系列之——一致性hash算法

一致性hash算法你了解吗?什么时候使用?解决什么问题?redis集群模式使用了一致性hash算法了吗? 数据分片(sharding) 分布式数据存储时,经常要考虑数据分片,避免将大量的数据放在单表或...

诸葛小猿
5分钟前
0
0
IMDB是否提供API? [关闭] - Does IMDB provide an API? [closed]

问题: I recently found a movie organizer application which fetches its data from the IMDB database . 最近,我发现了一个电影管理器应用程序,该应用程序从IMDB数据库中获取其数据。 ...

fyin1314
28分钟前
14
0
Elasticsearch系列之Query DSL

1 前言 我们先通过阅读官方文档,了解一下什么是 Query DSL 。 1.1 Query DSL Elasticsearch provides a full Query DSL (Domain Specific Language) based on JSON to define queries. DSL是......

冯文议
29分钟前
20
0
java使用jsoup时绕过https证书验证

java 代码 增加一个工具类 在jsoup获取之前调用此方法 //your codeSSLHelper.init();Connection connect = Jsoup.connect(url).userAgent(USER_AGENT);connect.header("Accept","text/htm......

MeiJM
32分钟前
30
0
6 Message 消息提示框

1 element.js导入message import { Message } from 'element-ui'# 赋值给变量,便于this调用Vue.prototype.$message = Message 2 调用 this.$message.error('错误')类型有:success,w......

书阳
33分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部