Nakładające się widoki treści UITableViewCell
Mam tę tabelę, której komórki wyglądają tak:
Jak widzisz, górna granica każdej komórki powinna pokrywać się z komórką powyżej. W tej chwili ta granica jest częścią tła (jak dotąd nie zachodzi).
Teraz oddzieliłem ramkę od tła, a mój kod tworzenia komórki wygląda tak:
<code>#define QAImage(NAME) [[[UIImageView alloc] initWithImage:[UIImage imageNamed:NAME]] autorelease] - (UITableViewCell*) tableView:(UITableView*)table cellForRowAtIndexPath:(NSIndexPath*)index { UITableViewCell *cell = [table dequeueReusableCellWithIdentifier:@"Entry"]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Entry"] autorelease]; cell.backgroundView = QAImage(@"bg-cell.png"); cell.selectedBackgroundView = QAImage(@"bg-cell-sel.png"); cell.selectionStyle = UITableViewCellSelectionStyleGray; UIImageView *img = QAImage(@"disclosure.png"); img.highlightedImage = [UIImage imageNamed:@"disclosure-sel.png"]; cell.accessoryView = img; CGRect r = cell.frame; r.size.height = table.rowHeight; r.size.width = table.frame.size.width; cell.frame = r; r = cell.contentView.frame; r.origin = CGPointMake(13, 13); r.size.width -= 8 + img.frame.size.width; r.size.height -= 25; [cell.contentView addSubview:[[[TagView alloc] initWithFrame:r] autorelease]]; img = QAImage(@"cell-top.png"); img.highlightedImage = [UIImage imageNamed:@"cell-top-sel.png"]; img.opaque = NO; r = img.frame; r.origin = CGPointMake(0, 1 - r.size.height); // The (supposed) overlapping happens here. img.frame = r; cell.contentView.clipsToBounds = NO; [cell.contentView addSubview:img]; } // Here I set the title. (omitted) return cell; } </code>
Problemem jest,granica jest wyświetlana tylko podczas przewijania w górę tabeli, w przeciwnym razie sama pokrywa się z komórką nad nią. (Zła droga.)
próbowałem[cell setNeedsDisplay]
w-tableView:willDisplayCell:forRowAtIndexPath:
, dodając obramowanie (cell-top.png
) za każdym razem, gdy żądana jest komórka (co oczywiście prowadzi do wielokrotnego rysowania i nie wygląda dobrze; niezależnie od tego, nadal nie rozwiązuje mojego problemu) i ustawieniaimg.layer.zPosition = 2
.
Jak mogę zmusić UIImageView, aby cały czas pozostawał na topie?