UITableViewCell右边的图像?

Oli*_* GL 46 iphone objective-c uitableview uiimageview uiimage

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

Ale*_*yne 80

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

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"foo.png"]];
cell.accessoryView = imageView;
[imageView release];
Run Code Online (Sandbox Code Playgroud)

  • 很抱歉觉醒这个线程,但它没有在起跑线上工作,我不得不添加`[imageView sizeToFit];`在发布之前和设置accessoryview属性之后,希望这有帮助:) (3认同)

Tom*_*ift 10

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

cell.contentView.transform = CGAffineTransformMakeScale(-1,1);
cell.imageView.transform = CGAffineTransformMakeScale(-1,1);
cell.textLabel.transform = CGAffineTransformMakeScale(-1,1);
cell.textLabel.textAlignment = NSTextAlignmentRight; // optional
Run Code Online (Sandbox Code Playgroud)

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


Zor*_*ayr 6

以下是Swift中使用以下方法的示例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!
}
Run Code Online (Sandbox Code Playgroud)


ger*_*ram 5

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

  1. 要使用accessoryView。
cell.accessoryView = UIImageView(image: UIImage(named: "imageName"))
cell.accessoryView.frame = CGRectMake(0, 0, 22, 22)
Run Code Online (Sandbox Code Playgroud)
  1. 如果您想要正确的图像+附件视图,则可以将UIImageView出口添加到ContentView(示例名称:rightImage),并将textLabel的背景颜色更改为Clear。
cell.rightImage.image = UIImage(named: "imageName")
cell.textLabel.backgroundColor = UIColor.clearColor()
Run Code Online (Sandbox Code Playgroud)