level 5
c15135959048
楼主
iOS UI设计---九宫格布局算法
在移动端开发中,我们经常会碰见类似下图的布局---九宫格布局。九宫格布局对于整体的UI设计有着重要的作用。

九宫格布局设计开发中,着重需要确认每个九宫格左上角的位置,也就是坐标。下面,我们以iOS开发为例,通过了解位置确认,来讲解九宫格算法。
在九宫格设计算法中,影响九宫格布局的因素有这几个:列数、行数、行间距、单元格的长宽等。通过观察九宫格的排序,我们可以清晰看出,整个布局就是对单元格进行循环复制,于是可以使用变量i来控制循环的次数,也就是九宫格的个数。接下来,我们将会在循环里面进行九宫格算法设计。

一、计算坐标
iOS开发中,坐标系以屏幕左上角为原点,横向代表X轴,纵向代表Y轴。在九宫格设计中,必须确认每个View的左上角原点的位置(也即坐标)。而坐标需要根据该单元格所处的行和列来确认。
1、行的确认
我们用i(取值:0,1,2,3,4...i)来表示单元格编号,假设每行有kRowNumber(=3)个单元格从而有下面的对应关系。
i row
0,1,2 0
3,4,5 1
6,7,8 2
由上表可以看出,row = i / 3。其中3表示kRowNumber(每行的单元格数)。故,在算法中,我们可以确定出,row = i / kRowNumber。
2、列的确认
我们仍然用i(取值:0,1,2,3,4...i)来表示单元格编号,仍然假设每行有kRowNumber(=3)个单元格从而有下面的对应关系。
i col
0,3,6 0
1,4,7 1
2,5,8 2
由上表可以看出,col = i % 3。其中3表示kRowNumber(每行的单元格数)。故,在算法中,我们可以确定出,col = i % kRowNumber。
3、坐标确认
通过确认行和列,我们就能很快的确认坐标的具体值。如下图所示,每个单元格左上角的坐标为:
viewPointX =boradX + row*(vWidth + marginX)
viewPointY =boradY + col *(vHeight + marginY)

二、生成Frame
知道每个单元格的坐标以及长和宽之后,我们就需要生成Frame。在iOS开发中,我们通过函数CGRectMake()来生成Frame。
CGrectMake(viewPointX,viewPointY,vWidth,vHeight)
三、创建UIView
最后一步是创建响应的UIView,我们需要使用initWithFrame:初始化方法通过上述生成的Frame来对View进行初始化布局
UIView *view =
[[UIViewalloc]initWithFrame:CGRectMake(viewPointX,viewPointY,vWidth,vHeight)];
四、结束
通过上述构造,我们就知道在整个for循环里对其进行初始化布局,下面我们来看个布局后的效果图。

2017年04月04日 06点04分
1
在移动端开发中,我们经常会碰见类似下图的布局---九宫格布局。九宫格布局对于整体的UI设计有着重要的作用。

九宫格布局设计开发中,着重需要确认每个九宫格左上角的位置,也就是坐标。下面,我们以iOS开发为例,通过了解位置确认,来讲解九宫格算法。在九宫格设计算法中,影响九宫格布局的因素有这几个:列数、行数、行间距、单元格的长宽等。通过观察九宫格的排序,我们可以清晰看出,整个布局就是对单元格进行循环复制,于是可以使用变量i来控制循环的次数,也就是九宫格的个数。接下来,我们将会在循环里面进行九宫格算法设计。

一、计算坐标iOS开发中,坐标系以屏幕左上角为原点,横向代表X轴,纵向代表Y轴。在九宫格设计中,必须确认每个View的左上角原点的位置(也即坐标)。而坐标需要根据该单元格所处的行和列来确认。
1、行的确认
我们用i(取值:0,1,2,3,4...i)来表示单元格编号,假设每行有kRowNumber(=3)个单元格从而有下面的对应关系。
i row
0,1,2 0
3,4,5 1
6,7,8 2
由上表可以看出,row = i / 3。其中3表示kRowNumber(每行的单元格数)。故,在算法中,我们可以确定出,row = i / kRowNumber。
2、列的确认
我们仍然用i(取值:0,1,2,3,4...i)来表示单元格编号,仍然假设每行有kRowNumber(=3)个单元格从而有下面的对应关系。
i col
0,3,6 0
1,4,7 1
2,5,8 2
由上表可以看出,col = i % 3。其中3表示kRowNumber(每行的单元格数)。故,在算法中,我们可以确定出,col = i % kRowNumber。
3、坐标确认
通过确认行和列,我们就能很快的确认坐标的具体值。如下图所示,每个单元格左上角的坐标为:
viewPointX =boradX + row*(vWidth + marginX)
viewPointY =boradY + col *(vHeight + marginY)

二、生成Frame知道每个单元格的坐标以及长和宽之后,我们就需要生成Frame。在iOS开发中,我们通过函数CGRectMake()来生成Frame。
CGrectMake(viewPointX,viewPointY,vWidth,vHeight)
三、创建UIView
最后一步是创建响应的UIView,我们需要使用initWithFrame:初始化方法通过上述生成的Frame来对View进行初始化布局
UIView *view =
[[UIViewalloc]initWithFrame:CGRectMake(viewPointX,viewPointY,vWidth,vHeight)];
四、结束
通过上述构造,我们就知道在整个for循环里对其进行初始化布局,下面我们来看个布局后的效果图。
