Подтвердить что ты не робот

UITableViewCell с изображением справа?

Есть ли способ установить UITableViewCell.image для отображения в правой части ячейки вместо левой? Или мне нужно добавить отдельный UIImageView с правой стороны раскладки ячеек?

4b9b3361

Ответ 1

Нет. Но вы можете легко добавить представление изображения в качестве вспомогательного представления в ячейку таблицы для того же эффекта.

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"foo.png"]];
cell.accessoryView = imageView;
[imageView release];

Ответ 2

Для простых случаев вы можете сделать это:

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

Это будет переворачивать (зеркально) содержимое, помещая любое изображение вправо. Обратите внимание, что вам нужно перевернуть imageView и любые текстовые метки, иначе они сами будут зеркально отражены! Это решение сохраняет вид аксессуаров справа.

Ответ 3

Вот пример в 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!
}

Ответ 4

Если вы не хотите создавать пользовательскую ячейку и будете работать со стандартным, у вас есть как минимум два способа:

  • Использовать аксессуар.
cell.accessoryView = UIImageView(image: UIImage(named: "imageName"))
cell.accessoryView.frame = CGRectMake(0, 0, 22, 22)
  1. Если вы хотите иметь правильный образ + аксессуар, вы можете добавить выход UIImageView в ContentView (имя примера: rightImage) и изменить цвет фона textLabel как Clear.
cell.rightImage.image = UIImage(named: "imageName")
cell.textLabel.backgroundColor = UIColor.clearColor()

Ответ 5

Подкласс 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

Ответ 6

Этот 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"];
}

Ответ 7

Чтобы добавить изображение @Правая сторона в ячейке, я бы предложил вам создать пользовательскую ячейку с изображением с правой стороны, это будет очень полезно для вас. и добавьте пустой вид, чтобы связать этот nib с классом customcell.

Теперь в вашем элементе nib файла ячейки удалите представление, добавьте tableViewcell и в этой ячейке перетащите изображение в правую сторону.

Теперь перейдите к классу TableViewCell, произнесите DemoCell, создайте розетку и установите ее с помощью изображения в столешнице nib

Теперь в методе tableview cellforrowatindexpath ссылайтесь на свою ячейку и используйте ее с именем nib, подобным этому

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];
}

и установите изображение согласно вашему требованию

cell.imageVw.img....

Ответ 8

Вы можете изменить размер изображения в аксессуаре, вызвав метод setFrame изображения таким образом: [imageView setFrame: CGRectMake (0, 0, 35.0, 35.0)];

Ответ 9

Не нужно создавать собственное изображение, просто отредактируйте cell.tintColor.