2012-06-26 98 views
0

我想添加与我的数组中的对象一样多的标签。但如何对齐他们??我想一个在另一个之下,并且页面完成它应该开始在下一列。但与代码我试图重写其他。在视图中添加多个标签

- (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

我太慢了:) – StuStirling

+0

这是工作,如果有更多的对象和视图是完整的如何把下一个对象在另一列 – Sekhar

+0

添加UILabel对象,即标签到UIScrollView。然后使[scrollView setContentSize:CGSizeMake(320,y)]; – Shorhashi

0

你总是以最后一个对象的循环。相反,你应该从适当的索引中获取对象。

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。

+0

仍然覆盖 – Sekhar

+0

查看更新的答案 – Apurv

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

可能,这将帮助你

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