0

我想使用 for 循环以编程方式创建 15 个 UIButton。我想用行和列来排列像矩阵这样的按钮,比如 3 行和 5 列。按钮高度为 50,宽度为 80。我可以设置 y、width、height 坐标。但我只面临x坐标的问题。告诉我设置 x 坐标的逻辑。

提前致谢。

4

3 回答 3

5
    float x = 10;
    float y = 10;
    float width = 50;
    float height = 50;
    for(int i =0;i<15;i++)
    {
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [btn setFrame:CGRectMake(x, y, width, height)];
        [btn setTitle:[NSString stringWithFormat:@"B%d",i+1] forState:UIControlStateNormal];
        [self.view addSubview:btn];

        x = x + width + 20;

        if((i+1)%3==0)
        {
            x = 10;
            y = y + height + 20;
        }
    }

只需替换 x 和 y 并在上面的代码中设置高度和宽度。

于 2013-03-04T10:40:57.347 回答
3
int row = 0;
int column = 0;
for (int i = 0; i < 15; i++)
{
    if((row%3 == 0) && (row > 0))
    {
        row = 0;
        column++;
    } 
    else{
        row++; 
    }
    CGRect btnFrame = CGRectMake(row*80+10, column*50+10, 80, 50);//your button frame
    UIButton *btnTemp = [UIButton buttonWithType:UIButtonTypeCustom];
    [btnTemp setFrame:btnFrame];
    [self.view addSubView:btnTemp];
}
于 2013-03-04T10:30:20.837 回答
2

干得好:

CGFloat marginX = 10.f;
CGFloat marginY = 5.f;
CGRect buttonFrame = CGRectMake(0., 0., 80., 50.f);

for(NSUInteger row = 0; row < 5; row++) {
    for(NSUInteger column = 0; column < 3; column++) {
        UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = buttonFrame;
        //... more button settings

        [self.view addSubview:button];
        buttonFrame.origin.x += marginX;
    }

    buttonFrame.origin.x = 0.;
    buttonFrame.origin.y += marginY;
}
于 2013-03-04T10:29:36.590 回答