Пользовательский фон метки покрывается при выделении ячейки - PullRequest
0 голосов
/ 10 ноября 2011

У меня странная проблема с клетками, когда они подсвечиваются.

Чтобы лучше представить вам, в чем проблема, взгляните на эти две картинки:

Вот так выглядит ячейка, когда она не выделена (нормальное состояние): http://cl.ly/0n193u3U1o403x1s0m3z

Вот как выглядит ячейка, когда она подсвечивается (во время нажатия): http://cl.ly/1o2U400D3L0b3n3m1N1J

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

Так я создаю ячейки (есть несколько типов, каждый из которых использует различный идентификатор ячейки).

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
                                   reuseIdentifier:CellTableIdentifier] autorelease];
    cell.backgroundView = [[[UIView alloc] init] autorelease];
}

switch (indexPath.section) {
    ...
    ...
    case kTableSectionPending:


        UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 10, self.tableView.frame.size.width - 20, 30.0)] autorelease];
        UILabel *label2 = [[[UILabel alloc] initWithFrame:CGRectMake(10, 50, self.tableView.frame.size.width - 20, 30.0)] autorelease];
        label.text = NSLocalizedString(@"IncompletePath", @"");
        label.font = [UIFont boldSystemFontOfSize:16];
        label.textAlignment = UITextAlignmentCenter;
        label.backgroundColor = [UIColor clearColor];
        label.layer.cornerRadius = 10;
        FFRoute *lastPoint = ((FFRoute *) [[[FFSQLite sharedSingleton] getRoutesFromItinerary:itinerary] lastObject]);
        label2.text = [NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"LastPoint", @""), [self getStringFromTimestampOfFFRoute:lastPoint]];
        label2.font = [UIFont systemFontOfSize:15];
        label2.textAlignment = UITextAlignmentCenter;
        label2.textColor = [UIColor whiteColor];
        label2.backgroundColor = [UIColor colorWithRed:68/255.f green:82/255.f blue:124/255.f alpha:1];
        label2.layer.cornerRadius = 10;
        [label2 setOpaque:YES];
        [cell.contentView addSubview:label];
        [cell.contentView addSubview:label2];

        // Set up background color
        UIColor *bgcolor = [UIColor colorWithRed:250/255.f green:212/255.f blue:137/255.f alpha:1];
        cell.backgroundView.backgroundColor = bgcolor;            
        break;
}

Я попытался установить значение «Непрозрачный», но безуспешно.

Чего мне не хватает? Спасибо

Ответы [ 2 ]

0 голосов
/ 10 мая 2014

В iOS 6 вы можете использовать 2 метода в UITableViewDelegate, чтобы настроить подсветку для ячейки, а также ее подпредставлений:

- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [cell setBackgroundColor:[UIColor lightGrayColor]];  // Your highlight color
    // Make changes to subviews in cell
}

- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [UIView animateWithDuration:0.5f animations:^{
        [cell setBackgroundColor:[UIColor whiteColor]];  // Your unhighlight
        // Revert back changes for subviews
    }];
}
0 голосов
/ 10 ноября 2011

Когда вы создаете ячейку, выполните:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

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

...