2015-10-06 3 views
1

Я хочу показать изображение в UITableViewCell с правой стороны каждой ячейки объектным кодом c. Я использовал следующий код, но он отображает изображение с левой стороны. Кадр не устанавливается.Как изменить рамку изображения TableCell?

UIImageView *bgView = [[UIImageView alloc]initWithFrame:CGRectMake(cell.frame.size.width/2, 0, cell.frame.size.width/2, cell.frame.size.height)]; 

     if([[self.categories objectAtIndex:indexPath.section] isKindOfClass:[SpecialPagesCategory class]]) { 
      cell.backgroundColor=[UIColor whiteColor]; 
      bgView.image = [UIImage imageNamed:@"fbBtn.png"]; 
     } else { 
      cell.backgroundColor=[UIColor clearColor]; 
      bgView.image = nil; 
     } 

     cell.imageView.image = bgView.image; 
     cell.imageView.frame = bgView.frame; 

Как сбросить изображение UITableViewCell через наш пользовательский фрейм? И я творю клетки, как следует

UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell==nil) { 
     cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
     [self.categoryTable flashScrollIndicators]; 
     cell.textLabel.font=[UIFont fontWithName:OPEN_SANS size:16.0]; 
     cell.backgroundColor=[UIColor clearColor]; } 

Я попытался с помощью Content Смотрите также следующим

UIImageView *bgView = [[UIImageView alloc]initWithFrame:CGRectMake(cell.frame.size.width/2, 0, cell.frame.size.width/2, cell.frame.size.height)]; 
if([[self.categories objectAtIndex:indexPath.section] isKindOfClass:[SpecialPagesCategory class]]) { 
      cell.backgroundColor=[UIColor whiteColor]; 
      bgView.image = [UIImage imageNamed:@"fbBtn.png"]; 
      [cell.contentView addSubview: bgView]; 
     } else { 
      cell.backgroundColor=[UIColor clearColor]; 
      bgView.image = nil; 
      [cell.contentView addSubview: bgView]; 
     } 

Проблема с «Content View» является ImageView не удаляется для ячейки, которая не удовлетворяет условие if

+2

Почему вы не используете пользовательскую ячейку? – Jan

+0

Уже закодирован без пользовательской ячейки, поэтому руководитель команды сказал, чтобы обойтись без специальной ячейки – Sakthimuthiah

+1

, почему вы используете 'cell.imageView'. создайте собственное изображение, как будто вы создали 'bgView' и установите свой фрейм. –

ответ

1

Создайте изображение и добавьте его в качестве подзадачи в ячейку, оно будет работать.

UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(20, 0, 50, 50)];// Your specification 


imgView.backgroundColor=[UIColor clearColor]; 
[imgView.layer setCornerRadius:5.0f]; 
[imgView.layer setMasksToBounds:YES]; 
[imgView setImage:[UIImage imageWithData: imageData]]; 
[ cell.contentView addSubview:imgView]; 
+0

Этот код не подходит для хорошо написанного проекта. Во-первых, это недействительно с MVC, который является базовым шаблоном в iOS. Во-вторых, он никогда не обновит фрейм. В-третьих, у вас нет стиля кодирования. – Vive

+0

Я создал пользовательскую ячейку просмотра таблицы и исправил ее. Thanks – Sakthimuthiah

+0

ok. Это лучшее решение. – Jan

1

Override этот метод:

- (void)viewWillLayoutSubviews { 
    [super viewWillLayoutSubviews]; 

    [self.myImageView setFrame:CGRectMake(0, 0, 200, 200)]; 
} 

Где OFC вы должны заменить myImageView с точки зрения изображения и установить нужный размер кадра.

BTW, совет качества кода: я бы также посоветовал прочитать о MVC и сохранить этот код в файле реализации подкласса UITableViewCell под кодом layoutSubviews.

Смежные вопросы