UITableView с пользовательской ячейкой и разделителем. Изменение альфа-значения в прокрутке

У меня есть UITableView с Custom Cell . Некоторые пользовательские ячейки загружаются с изображением. И я добавляю пользовательский разделитель для ячеек, у которых есть изображение. Проблема возникает при прокрутке. Всякий раз, когда я прокручиваю, opacity UIView изменяется.

Вот мой код:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if(cell == nil){ NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; cell = [topLevelObjects objectAtIndex:0]; } if (cell && (NSNull*) imageString != [NSNull null]) { UIView* separatorLineView; = [[UIView alloc] initWithFrame:CGRectMake(0, -1, 320, 5)]; separatorLineView.backgroundColor = [UIColor blackColor]; separatorLineView.alpha = 0.2; [cell.contentView addSubview:separatorLineView]; } 

Alpha для данного вида составляет 0.2 а при прокрутке он становится толще и толще. Как я могу решить эту проблему?

Сделайте то, что предлагали @rmaddy и @rdelmar, но так как вы используете пользовательскую ячейку в любом случае, самым быстрым способом, imho, было бы:

  1. Добавьте эту строку в contentView ячейки через интерфейс Builder напрямую
    • @property (strong, nonatomic) IBOutlet UIView *vwLine;
      • также @synthesize vwLine;
    • Установите его рамку, цвет фона и значение альфа ( очевидно )
    • Установите для hidden свойства значение YES
  2. Когда вы выполните imageString != [NSNull null]
    • если TRUE, тогда [cell.vwLine setHidden:NO];

Пример:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if(cell == nil) { NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; cell = [topLevelObjects objectAtIndex:0]; } if (imageString != [NSNull null]) { [cell.vwLine setHidden:NO]; } } 

Я думаю, проблема заключается в том, что вы добавляете separatorLineView в ячейки, у которых уже есть один, когда вы прокручиваете, так что вы видите линии поверх других строк. Вы можете исправить это, добавив тег в свой вид строки и проверив, имеет ли ячейка подвью с этим тегом, и если да, не добавляйте другую строку.

В вашем коде может быть проблема повторного использования ячейки. Поэтому попробуйте со следующим кодом:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { . . . . if(cell == nil) { NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; cell = [topLevelObjects objectAtIndex:0]; if(cellHasImage == YES) { //// just initialize UIView and add as addSubview of cell.contentView UIView* separatorLineView; = [[UIView alloc] init]; separatorLineView.frame = CGRectMake(0, -1, 320, 5); separatorLineView.tag = 111; // set whatever you like [cell.contentView addSubview:separatorLineView]; } } . . . /// get UIView base on it's tag if(cellHasImage == YES) { UIView* separatorLineView; = (UIView *) [cell.contentView viewWithTag:111]; separatorLineView.backgroundColor = [UIColor blackColor]; separatorLineView.alpha = 0.2; } . . . return cell; } 
  • UITableView didSelectRowAtIndexPath не вызывается после программного выбора строки
  • Бета IOS9 показывает частично скрытый SearchBar над табличным представлением
  • Изменение направления UITableView справа налево
  • iint 7 tintColor не применяется к элементам управления
  • Повторные ячейки при прокрутке uitableview
  • Неожиданная задержка после нажатия контроллера просмотра
  • Программно добавить UILabel в панель инструментов
  • Типы классов в UITableViewCell
  • UITableView всех зарегистрированных классов / nibs
  • Бесконечно циклический UITableView
  • Пользовательский прототип Cell с Parse - Swift
  • Interesting Posts

    Как отображать изображение только при первом открытии приложения?

    Можно ли игнорировать символы в строке при сопоставлении с регулярным выражением

    Отключить сортировку NSMutableDictionary

    Удобное истекшее время / время в Objective-C

    Рекомендуемые политики объединения в основном контексте и частном контексте в многопоточном приложении CoreData

    Удалите цвет строки состояния с одного экрана, если его набор в приложении делегировать

    Как приложение iOS может запускать функцию в фоновом режиме повторяющимся образом (т.е. один раз в час)?

    Как реализовать панель навигации для всплывающего диалогового окна в IOS?

    Swift 2: ошибка при попытке найти с помощью indexOf

    ADBannerContentSizeIdentifierPortrait устарел в iOS6?

    Как умножить каждое значение Int в массиве на константу в Swift?

    Отказано в доступе: UserXXX отсутствует разрешение «Общее / Чтение»

    Добавление границы к краям непрозрачной области UIImage с фильтром

    Бросьте из ! для несвязанного типа «xxx» всегда терпит неудачу, Swift после обновления до 1.2

    Как разместить объекты в подходящем месте для разных экранов

    Давайте будем гением компьютера.