如何在tableview行中编写两个或多个文本并以不同方式定位它们?

时间:2012-01-20 10:48:31

标签: iphone objective-c uitableview uilabel

我有一个UITableView,我想要一行中应该右对齐的文本和另一个应该左对齐的文本。这两个文本都应该从行的边界开始。我不希望他们从行的边界开始。我怎样才能做到这一点?

enter image description here

我想在左对齐的每一行中写入文本,也要在右对齐的文本中写入文本。

提前致谢。

3 个答案:

答案 0 :(得分:2)

在您的cellForRowAtIndexPath方法中,只需创建一个包含2个UILabel的单元格,并为其指定所需的位置。小例子:

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
}    
  UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 50, 20)];
  UILabel *label2 = [[UILabel alloc]initWithFrame:CGRectMake(80, 10, 50, 20)];
  label1.textAlignment = UITextAlignmentLeft;
  label2.textAlignment = UITextAlignmentRight;
  //other labels customization and add them to your cell
  return cell;
}

没有附近的SDK,所以可能会有一些错误。

希望有所帮助

答案 1 :(得分:1)

UILabel在样式和布局方面非常有限。考虑使用多个布局或CoreText。

答案 2 :(得分:1)

你可以做的是对标签进行子类化并重写其drawtextinrect函数,如此

@interface UILabelCustom : UILabel 

- (void)drawTextInRect:(CGRect)rect;
@end


@implementation UILabelCustom

-(void)drawTextInRect:(CGRect)rect{
    UIEdgeInsets insets = {5, 5, 5, 5};
    return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}

@end

这将允许您在标签的边缘周围给出边距 您也可以创建一个包含2个自定义标签的uiview,并相应地左右对齐它们。使用uvview作为2个标签的容器,根据需要定位它们。我认为这可能会产生你想要的效果

编辑:刚刚看到您的编辑用于表格单元格。你需要创建一个自定义单元格以及自定义uilabel

@interface CustomCell : UITableViewCell {

}


@property (retain, nonatomic) UILabelCustom *label1,*label2;


@end

@implementation CustomCell

@synthesize label1, label2;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)dealloc
{

    [label1 release];
    [label2 release];


    [super dealloc];
}

@end