在视图中添加多个标签

时间:2012-06-26 11:19:51

标签: iphone objective-c ios xcode uilabel

我想在数组中添加与对象一样多的标签。但是如何对齐它们?我希望一个在另一个之下,并且页面已经完成,它应该在下一列开始。但是我尝试使用代码覆盖另一个。

- (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];
    }
}

5 个答案:

答案 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];
   }
  }