首页 > 代码库 > iOS应用九宫格算法

iOS应用九宫格算法

 

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

iOS应用九宫格算法