以下情况:
我想建立一个cgrect
。我需要的是:最多4行。最多6列。
所以例如它必须如何看待:
我需要分钟。
+ + + +
(1行,4个按钮)
并且我需要:
+ + + + + +
+ + + + +
+ + + + + +
+ + + + +
(4行,22个按钮)
我想要的是传递来自其他BUTTONS_FOR_ROW1-4
的{{1}}数据。对于min示例,这是button_for_row1 = 4,button_for_row2 = 0,button_for_row3 = 0,button_for_row4 = 0.
表示最大例子button_for_row1 = 6,button_for_row2 = 5,button_for_row3 = 6,button_for_row4 = 5
我的代码现在是这样的:
VC
正如您所看到的,我的代码现在只有BUTTONS_PER_ROW而不是BUTTONS_FOR_ROW1 - 。
缩进用于向左或向右推动一行。
但我认为这会更容易,因为我的代码在制作22个按钮时会得到一些奇怪的东西。
感谢您的帮助!
答案 0 :(得分:0)
您的基本逻辑可以简化。我会在这里使用while循环。对于每行按钮数量最多的情况(更简单的情况),这是我认为可以做到你想要的明确方式的概述:
y = .... (initial value of y)
NSUInteger numberOfButtons = [self.gameModel.buttons count];
// Layout out the buttons, with no more than _BUTTONS_PER_ROW in each row
NSUInteger buttonsLeft = numberOfButtons;
NSUInteger buttonsInRow = 0;
while(buttonsLeft>0)
{
if(buttonsInRow>_BUTTONS_PER_ROW)
{
// Increment y, reset x
y += ....
x = .... (initial position for x)
buttonsInRow = 0;
}
// Create a button
CGRect frame = CGRectMake(x, y, 125, 125);
ButtonView* buttonView = [[ButtonView .....
x += 80;
++buttonsInRow;
--buttonsLeft;
}
对于更一般的情况,添加一个变量来跟踪行号,并使用和数组在进入while循环之前每行加载的最大按钮数。