gpt4 book ai didi

ios - 使用来自 NSArray 的 UIButtons 自动填充 ScrollView

转载 作者:行者123 更新时间:2023-11-29 02:55:18 24 4
gpt4 key购买 nike

我需要填充一个 View ,使其成为 UIButtons 中 NSArray 对象的内容,并且如果按钮数量不适合 ScrollView 。例如,如果 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];

}

这就是我得到的:

enter image description here

最佳答案

我会添加变量来跟踪实际的 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];
}

关于ios - 使用来自 NSArray 的 UIButtons 自动填充 ScrollView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23970816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com