引言
在IOS开发 UI设计中,大多数的软件界面都采用九宫格的序列方式来排列
九宫格计算思路
-设计思路:将九个红色的方框和白色的字体封装到白色的底色当中,即将UIImageview控件和UILabel控件装入白色的UIView中。
UIImageview * view = [[UIImageview alloc] init];
UIImageview *smallview = [[UIImageview alloc] init];
[view addsubview:smallview]
UILabel *label = [[UILabel alloc] init];
[view addsubview:label];
- 利用控件的索引index计算出控件所在的行号和列号
1、先将底部的白色控件写入interface中;
@property (strong, nonatomic) IBOutlet UIView *bigview;
2、计算出3个子控件之间的间隙值;
假设红色子控件的宽为Width和高度Heigth
CGFloat Width = 78;
CGFloat Height = 88
int colsX = 3;
int colsY = 3;
//每列之间的间隙值
CGFloat marginX = (self.bigview.frame.size.width - Width * closX) / (colsX -1);
//每列之间的间隙值
CGFloat marginY = (self.bigview.frame.size.height - Height * close) / (colsY -1);
3、利用列号计算控件的x值
//计算索引长度,索引的长度其实就是红色子控件所在的白色底色控件的数组的位置(即红色子控件所标示的0、1、2、3等)
NSUInteger index = self.bigview.subviews.count;
//第0行我们可以得出是由0、1、2的索引对3取余数得来,第一行由3、4、5的索引对3取余数得来,以此类推
NSUInteger indexX = index % 3;
CGFloat WidthX = indexX * (Width + marginX);
4、利用行号计算控件的y值
//第0列我们可以得出是由0、3、6的索引对3相除得来,第一行由2、4、7的索引对3相除得来,以此类推
NSUInteger indexY = index / 3;
CGFloat HeightY = indexY * (Height + marginY);
bagview.frame = CGRectMake(WidthX, HeightY, Width, Height);
[self.view addsubview: view];