我的代码添加了文本标签,副标题和附件图标,如下所示:
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收藏夹调用屏幕)。这是怎么做到的?
答案 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;