54

有没有办法将 UITableViewCell.image 设置为显示在单元格的右侧而不是左侧?或者我需要在单元格布局的右侧添加一个单独的 UIImageView 吗?

4

11 回答 11

91

不可以。但是您可以轻松地将图像视图作为附件视图添加到表格单元格以获得相同的效果。

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"foo.png"]];
cell.accessoryView = imageView;
[imageView release];
于 2009-04-23T17:12:27.983 回答
11

对于简单的情况,您可以这样做:

cell.contentView.transform = CGAffineTransformMakeScale(-1,1);
cell.imageView.transform = CGAffineTransformMakeScale(-1,1);
cell.textLabel.transform = CGAffineTransformMakeScale(-1,1);
cell.textLabel.textAlignment = NSTextAlignmentRight; // optional

这将翻转(镜像)将任何 imageView 放在右侧的内容视图。请注意,您必须翻转 imageView 和任何文本标签,否则它们本身将被镜像!此解决方案保留右侧的附件视图。

于 2015-07-24T17:44:59.963 回答
8

这是Swift中使用 using 方法的示例accessoryView

private let reuseIdentifier: String = "your-cell-reuse-id"

// MARK: UITableViewDataSource

func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  var cell : UITableViewCell? = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier) as? UITableViewCell
  if (cell == nil) {
    cell = UITableViewCell(style:UITableViewCellStyle.Subtitle, reuseIdentifier:reuseIdentifier)
  }

  cell!.textLabel!.text = "Hello"
  cell!.detailTextLabel!.text = "World"
  cell!.accessoryView = UIImageView(image:UIImage(named:"YourImageName")!)
  return cell!
}
于 2015-04-25T23:53:12.160 回答
5

如果您不想制作自定义单元格并使用标准单元格,则至少有两种方法:

  1. 使用附件视图。
cell.accessoryView = UIImageView(image: UIImage(named: "imageName"))
cell.accessoryView.frame = CGRectMake(0, 0, 22, 22)
  1. 如果你想拥有正确的图像+附件视图,那么你可以将 UIImageView 出口添加到 ContentView(示例名称:rightImage)并将 textLabel 的背景颜色更改为清除。
cell.rightImage.image = UIImage(named: "imageName")
cell.textLabel.backgroundColor = UIColor.clearColor()
于 2015-07-30T05:39:28.847 回答
4

swift3swift4中,我们可以使用这个:

cell.accessoryView = UIImageView(image:UIImage(named:"imageNmae")!)
于 2018-02-13T14:39:18.983 回答
2

子类 UITableViewCell 并覆盖layoutSubviews然后只调整 self.textLabel、self.detailTextLabel 和 self.imageView 视图的框架。

这是它在代码中的样子:

MYTableViewCell.h

#import <UIKit/UIKit.h>

@interface MYTableViewCell : UITableViewCell
@end

MYTableViewCell.m

#import "MYTableViewCell.h"

@implementation MYTableViewCell

- (void)layoutSubviews
{
    [super layoutSubviews];
    if (self.imageView.image) {
        self.imageView.frame = CGRectMake(CGRectGetWidth(self.contentView.bounds) - 32 - 8,
                                          CGRectGetMidY(self.contentView.bounds) - 16.0f,
                                          32,
                                          32);
        CGRect frame = self.textLabel.frame;
        frame.origin.x = 8;
        self.textLabel.frame = frame;
        frame = self.detailTextLabel.frame;
        frame.origin.x = 8;
        self.detailTextLabel.frame = frame;
    }
}

@end
于 2012-04-17T14:01:00.223 回答
0

这个 Soln 用于在每个单元格中添加不同的图像....只是一个尝试

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

if(indexPath.row == 0) {
    cell.image = [UIImage imageNamed:@"image.png"];
}

else if (indexPath.row == 1) {
    cell.image = [UIImage imageNamed:@"image1.png"];
}
于 2010-03-01T19:05:43.177 回答
0

要在单元格中添加图像@右侧,我建议您在右侧创建一个带有 imageview 的自定义单元格,这对您非常有用。并添加一个空视图以将此笔尖与 customcell 类链接。

现在在您的单元格的 nib 文件中删除视图,添加 tableViewcell 并在该单元格中将 imageView 拖放到右侧。

现在去 TableViewCell 的类说 DemoCell ,创建一个插座并使用 tablecell 笔尖中的 imageview 设置它

现在,在 tableview 的 cellforrowatindexpath 方法中引用您的单元格并将其与笔尖名称一起使用,如下所示

static NSString *CellIdentifier = @"Cell";
DemoCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[SettingCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    cell = [[[NSBundle mainBundle]loadNibNamed:@"DemoCell" owner:self options:nil] lastObject];
}

并根据您的要求设置图像

细胞.imageVw.img ....

于 2012-07-12T09:45:21.407 回答
0

您可以通过调用 imageview 的 setFrame 方法来调整附件视图中的图像大小,如下所示: [imageView setFrame:CGRectMake(0, 0, 35.0, 35.0)];

于 2013-07-22T19:31:55.780 回答
0

无需创建自己的图像,只需编辑cell.tintColor.

于 2015-07-14T07:49:38.273 回答
0

有一种以position编程方式设置的方法。这是Swift解决方案的版本:

image.frame = CGRect.init(
x: self.view.frame.width - image.frame.width*1.1,
y: image.frame.origin.y,
width: image.frame.width,
height: image.frame.height)

这会将您的图像定位在单元格的右侧。该解决方案是根据屏幕尺寸自动调整位置。唯一的缺点是当您旋转设备时需要重新加载数据,但您可以override在您的UITableView类中使用didRotate监听器方法:

override func didRotate(from fromInterfaceOrientation: UIInterfaceOrientation) {
    _tableView.reloadData()}
于 2018-01-18T23:17:34.817 回答