将文本或绘图添加到uitableviewcell

时间:2015-11-03 06:34:02

标签: ios objective-c uitableview

我的代码添加了文本标签,副标题和附件图标,如下所示:

cell.textLabel.text = @"Title";
cell.detailTextLabel.text = @"Subtitle";
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

// And I see code in the docs for an image:
cell.imageView.image = ...

但是我希望图像所在的位置(左侧)是文本或标签(如Instagram中)或绘制圆圈(如Apple收藏夹调用屏幕)。这是怎么做到的?

2 个答案:

答案 0 :(得分:4)

虽然使用UITableViewCellStyleDefault您可以免费获得imageView UITableViewCell属性并且可以使用,以防万一,您希望对其进行良好控制在单元格中放置imageView和标签,您需要选择自定义UITableViewCell 。以下是如何实现这一目标的步骤:

第1步:创建一个新的UITableViewCell子类,说MyCustomCell

@interface MyCustomCell : UITableViewCell

第2步:initWithStyle:reuseIdentifier:中实施MyCustomCell.m方法,并将任何自定义视图添加到单元格内容视图。

- (id)initWithStyle:(UITableViewCellStyle)iStyle reuseIdentifier:(NSString *)iReuseIdentifier {
    if ((self = [super initWithStyle:iStyle reuseIdentifier:iReuseIdentifier])) {
         MyView *myCustomView = [[MyView alloc] init];
         myCustomView.frame = CGRectMake(6.0f, 6.0f, 30.0f, 30.0f);
         [self.contentView addSubview:myCustomView];
    }

    return self;
}

第3步:实施layoutSubviews方法,以便对细胞内容子视图进行精细控制。

- (void)layoutSubviews {
    [super layoutSubviews];
    self.imageView.frame = CGRectMake(6.0f, 6.0f, 30.0f, 30.0f);
    GFloat textLabelXPosition = self.imageView.frame.origin.x + self.imageView.frame.size.width + 10;
    self.textLabel.frame = CGRectMake(textLabelXPosition, 0.0, contentRect.size.width - textLabelXPosition, contentRect.size.height);
}

第4步:最后在表格视图控制器的MyCustomCell方法中使用cellForRowAtIndexPath:实例。

答案 1 :(得分:0)

创建一个imageView image,然后在cellForRowAtIndexPath

中添加以下行
CGRect newFrame;
newFrame.origin.x = self.accessoryView.frame.origin.x;
newFrame.origin.y = self.accessoryView.frame.origin.y;

self.image.frame= newFrame;

这将使您可以访问附件视图的坐标。现在覆盖您的文本/标签。 在xib中创建一个标签 - yourLabel

self.yourLabel.frame= newFrame;