UILabel文本与以前的文本重叠

时间:2014-11-12 06:13:52

标签: ios

enter image description here enter image description here我以编程方式创建UILabel以显示多条评论。注释计数不固定,所以我根据注释的数量使用for循环创建标签。用户还可以在同一视图中添加注释,添加的最新注释应显示在顶部。但在这里我遇到的问题是,UILabel文本与之前的文本重叠。 我应该如何以编程方式更新UILabel。

请帮助。谢谢。

首先,从viewDidLoad调用showComment来显示初始注释列表

-(void)showComment{
  for(int i= 0 ;i >fetchCommentArray.count;i++){
   FetchComment *objComment = [fetchCommentArray objectAtIndex:i];
   commentLabel = [[UILabel alloc]initWithFrame:CFRectMake(20,moreY,200,100)];
   commentLabel.text = objComment.comment;
   moreY + = 40;

}     }

现在,当添加新评论以显示新评论时,我正在调用ShowComment方法。

2 个答案:

答案 0 :(得分:1)

终于做到了。

我们必须创建另一个标签,并用初始标签的坐标替换该标签。

-(void)setLabel:(NSString *)text{
CGFloat y = 70;
l.text = @"";
for(int i=0;i<5 ;i++){
    l = [[UILabel alloc]initWithFrame:CGRectMake(100, y,100, 21)];
    l.text = text;
   // l.tag = i;
    labelTag = i;
    [self.view addSubview:l];

    y+= 50;
    }

  }

//假设使用for循环在视图上添加了5个标签。这里CGFloat y = 50;标签开始的地方。

-(IBAction)btnClick:(id)sender{
NSLog(@">> %d",labelTag);  
for (id viewToRemove in [self.view subviews]){ // This will remove all the labels from the view.
if ([viewToRemove isMemberOfClass:[UILabel class]])
[viewToRemove removeFromSuperview];
[self.view addSubview:lbl1]; // here lbl1 is another label which we want to show.
}


CGFloat y = 70;
for(int i=0;i<labelTag;i++){
l1 = [[UILabel alloc]initWithFrame:CGRectMake(100, y,100, 21)];
l1.text = @"text to be changed";
NSLog(@"label text :%@",l1.text);
[self.view addSubview:l1];
y+=50;
}

}

//假设在按钮点击时我们想要更改初始文本并替换为新文本。因此,使用按钮单击方法代码,您可以替换标签文本,防止文本重叠。

答案 1 :(得分:-1)

不是以编程方式创建UILabel,然后使用for循环将其添加到UIView,而是使用 UITableview 显示您的评论,这是一个非常简单的解决方案。 希望这会有所帮助。