Ios 使用NSArray中的UIButtons自动填充滚动视图

Ios 使用NSArray中的UIButtons自动填充滚动视图,ios,objective-c,ipad,uibutton,Ios,Objective C,Ipad,Uibutton,我需要填充一个视图,使其成为UIButtons中NSArray对象的内容,如果按钮的数量不适合滚动视图。例如,如果array.count为25,并且只适合20个按钮、4列5行,则剩余的5个按钮将通过滚动显示 我目前正在测试它,以便: UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 20, 728, 984)]; sv.backgroundColor = [UIColor greenColo

我需要填充一个视图,使其成为UIButtons中NSArray对象的内容,如果按钮的数量不适合滚动视图。例如,如果array.count为25,并且只适合20个按钮、4列5行,则剩余的5个按钮将通过滚动显示

我目前正在测试它,以便:

    UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 20, 728, 984)];
    sv.backgroundColor = [UIColor greenColor];
    sv.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
sv.contentSize = CGSizeMake(PAGE_WIDTH, sv.frame.size.height);
sv.pagingEnabled = YES;
[self.view addSubview:sv]; // assuming a view controller

    NSMutableArray *freeHoursList = [NSMutableArray arrayWithObjects:
                                     [NSString stringWithFormat:@"10"],
                                     [NSString stringWithFormat:@"11"],
                                     [NSString stringWithFormat:@"12"],
                                     [NSString stringWithFormat:@"17"],
                                     [NSString stringWithFormat:@"18"],
                                     [NSString stringWithFormat:@"19"],
                                     [NSString stringWithFormat:@"10"],
                                     [NSString stringWithFormat:@"11"],
                                     [NSString stringWithFormat:@"12"],
                                     [NSString stringWithFormat:@"17"],
                                     [NSString stringWithFormat:@"18"],
                                     [NSString stringWithFormat:@"19"],nil];
for (int i = 0; i < freeHoursList.count; i++)
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.backgroundColor = [UIColor redColor];
btn.frame = CGRectMake(i * (BUTTON_WIDTH + BUTTON_PADDING), 10, BUTTON_WIDTH, BUTTON_HEIGHT);
btn.tag = i + MAGIC_BUTTON_TAG_OFFSET; // to relate to the array index
    NSString *numero = [freeHoursList objectAtIndex:i];
[btn setTitle:[NSString stringWithFormat:@"%@",numero]  forState:UIControlStateNormal];
//[btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[sv addSubview:btn];

}
UIScrollView*sv=[UIScrollView alloc]initWithFrame:CGRectMake(20,20728984)];
sv.backgroundColor=[UIColor greenColor];
sv.autoresizingMask=uiviewsautoresizingflexiblewidth | uiviewsautoresizingflexiblewhight;
sv.contentSize=CGSizeMake(页面宽度,sv.frame.size.height);
sv.PaginEnabled=是;
[self.view addSubview:sv];//假设一个视图控制器
NSMutableArray*freeHoursList=[NSMutableArray arrayWithObjects:
[NSString stringWithFormat:@“10”],
[NSString stringWithFormat:@“11”],
[NSString stringWithFormat:@“12”],
[NSString stringWithFormat:@“17”],
[NSString stringWithFormat:@“18”],
[NSString stringWithFormat:@“19”],
[NSString stringWithFormat:@“10”],
[NSString stringWithFormat:@“11”],
[NSString stringWithFormat:@“12”],
[NSString stringWithFormat:@“17”],
[NSString stringWithFormat:@“18”],
[NSString stringWithFormat:@“19”],无];
对于(int i=0;i
这就是我得到的:


我会添加跟踪实际Y位置和实际列的变量。因此,您将检查“下一步”按钮是否适合滚动的宽度,如果其未设置列为0,则将X添加到按钮Y的位置。看起来是这样的:

int BUTTON_Y = 10;
int column = 0;
for (int i = 0; i < freeHoursList.count; i++, column++)
{       
    if(column*(BUTTON_WIDTH + BUTTON_PADDING) + BUTTON_WIDTH > sv.contentSize.width) {
        BUTTON_Y += BUTTON_HEIGHT;
        column = 0;
    }

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.backgroundColor = [UIColor redColor];   
    btn.frame = CGRectMake(column * (BUTTON_WIDTH + BUTTON_PADDING), BUTTON_Y, BUTTON_WIDTH, BUTTON_HEIGHT);
    btn.tag = column + MAGIC_BUTTON_TAG_OFFSET; // to relate to the array index
        NSString *numero = [freeHoursList objectAtIndex:i];
    [btn setTitle:[NSString stringWithFormat:@"%@",numero]  forState:UIControlStateNormal];
    //[btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [sv addSubview:btn];
}
int按钮_Y=10;
int列=0;
对于(int i=0;isv.contentSize.WIDTH){
按钮Y+=按钮高度;
列=0;
}
UIButton*btn=[UIButton Button类型为:UIButtonyPeroundRect];
btn.backgroundColor=[UIColor redColor];
btn.frame=CGRectMake(列*(按钮宽度+按钮填充)、按钮Y、按钮宽度、按钮高度);
btn.tag=column+MAGIC_BUTTON_tag_OFFSET;//与数组索引相关
NSString*numero=[freehurslistobjectatindex:i];
[btn setTitle:[NSString stringWithFormat:@“%@”,数字]用于状态:UIControlStateNormal];
//[btn addTarget:self action:@selector(按钮按下:)for ControlEvents:UIControlEventTouchUpInside];
[sv添加子视图:btn];
}

谢谢你的回答,但现在我有6列按钮,但在最后一列的右边有另外两个按钮。那么你到底想要什么?你现在有什么?对不起,我想这是因为宽度和高度的值​​已定义…是的,它将根据按钮和按钮填充跳到下一行:)