九宫格计算

Posted on 2016-07-06 18:06  柠檬片  阅读(168)  评论(0)    收藏  举报
 1 //    1.子view的横向间距 = (父view的宽度- 3 * 子view的宽度) / 4
 2 //    2.子view的纵向间距 = (父view的高度- 3 * 子view的高度) / 4
 3 //    3.当前子view的行号 = 当前遍历到得索引值 / 总列数
 4 //    4.当前子view的列号 = 当前遍历到得索引值 % 总列数
 5 //    5.子view横坐标的公式 = 子view的横向间距 + 列号 * (子view的横向间距+ 子view的宽度)
 6 //    6.子view纵坐标的公式 = 子view的纵向间距 + 行号 * (子view的纵向间距+ 子view的高度)
 7 
 8 
 9 // 九宫格计算公式
10 
11     CGFloat btnW = 74;
12     CGFloat btnH = 74;
13     int totleColume = 3;
14     CGSize size = self.frame.size;
15 //    1.子view的横向间距 = (父view的宽度- 3 * 子view的宽度) / 4
16     CGFloat marginX = (size.width - totleColume * btnW) / (totleColume +1);
17 //    2.子view的纵向间距 = (父view的高度- 3 * 子view的高度) / 4
18     CGFloat marginY = (size.height - totleColume * btnH) / (totleColume +1);
19 
20     for (int i = 0; i < self.subviews.count; i++)
21     {
22         //    3.当前子view的行号 = 当前遍历到得索引值 / 总列数
23         int row = i / totleColume;
24         //    4.当前子view的列号 = 当前遍历到得索引值 % 总列数
25         int colume = i % totleColume;
26         //    5.子view横坐标的公式 = 子view的横向间距 + 列号 * (子view的横向间距+ 子view的宽度)
27         CGFloat x = marginX + colume * (marginX + btnW);
28         //    6.子view纵坐标的公式 = 子view的纵向间距 + 行号 * (子view的纵向间距+ 子view的高度)
29         CGFloat y = marginY + row * (marginY + btnH);
30         
31         UIButton * btn = self.subviews[i];
32         btn.frame = CGRectMake(x, y, btnW, btnH);
33 
34     }
九宫格计算