我想在数组中添加与对象一样多的标签。但是如何对齐它们?我希望一个在另一个之下,并且页面已经完成,它应该在下一列开始。但是我尝试使用代码覆盖另一个。
- (void)viewDidLoad
{
[super viewDidLoad];
array = [[ NSMutableArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
for( int i=0;i<[array count];i++)
{
NSString *theText = [array lastObject];
UILabel *label = [[UILabel alloc]init];
label.text = theText;
label.backgroundColor = [UIColor clearColor];
label.lineBreakMode = UILineBreakModeWordWrap;
label.frame = CGRectMake(0, label.frame.origin.y + label.frame.size.height, size.width + 20, size.height + 20);
[self.view addSubview:label];
}
}
答案 0 :(得分:5)
试试这段代码..
array = [[ NSMutableArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
UILabel *label;
int y =10;
for( int i=0;i<[array count];i++)
{
NSString *theText = [array objectAtIndex:i];
label = [[UILabel alloc]init];
label.text = theText;
label.backgroundColor = [UIColor clearColor];
label.frame = CGRectMake(0, y + label.frame.size.height, size.width + 20, size.height + 20);
[self.view addSubview:label];
y = y +label.frame.size.height+5;
}
答案 1 :(得分:0)
您总是在循环中使用最后一个Object。相反,你应该从适当的索引中获取对象。
int y = 10;
for( int i=0;i<[array count];i++)
{
//NSString *theText = [array lastObject]; Wrong One
NSString *theText = [array objectAtIndex:i]; //Correct One
...
...
label.frame = CGRectMake(0, y, size.width + 20, size.height);
y += size.height + 5;
}
此外,您需要妥善管理origin.y。
答案 2 :(得分:0)
- (void)viewDidLoad
{
float originFromY = 0;
[super viewDidLoad];
array = [[ NSMutableArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
for( int i=0;i<[array count];i++)
{
NSString *theText = [array lastObject];
UILabel *label = [[UILabel alloc]init];
label.text = theText;
label.backgroundColor = [UIColor clearColor];
lineBreakMode:UILineBreakModeWordWrap];
label.frame = CGRectMake(0, originFromY, 50,40);
[self.view addSubview:label];
originFromY += 60;
}
}
这可能会对你有所帮助
答案 3 :(得分:0)
您修改后的代码
- (void)viewDidLoad
{
[super viewDidLoad];
array = [[ NSMutableArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
int y = 0;
for( int i=0;i<[array count];i++)
{
NSString *theText = [array lastObject];
UILabel *label = [[UILabel alloc]init];
label.text = theText;
label.backgroundColor = [UIColor clearColor];
lineBreakMode:UILineBreakModeWordWrap];
label.frame = CGRectMake(0, y, size.width + 20, size.height + 20);
y += size.height + 20;
[self.view addSubview:label];
}
}
答案 4 :(得分:0)
这样做:
- (void)viewDidLoad
{
[super viewDidLoad];
array = [[ NSMutableArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
for( int i=0;i<[array count];i++)
{
UILabel *label = [[UILabel alloc]init];
label.text = [array objectAtIndex:i];
label.backgroundColor = [UIColor clearColor];
label.frame = CGRectMake(10, (i*30)+10, 100, 30); // here height is 30 and width is 100;
[self.view addSubview:label];
}
}