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 }
浙公网安备 33010602011771号