Musiałem zastosować tę samą koncepcję, aby komórki UITableCell miały „przestrzeń” między nimi. Ponieważ nie możesz dosłownie dodać spacji między komórkami, możesz to sfałszować, manipulując wysokością komórki UITableView, a następnie dodając UIView do contentView swojej komórki. Oto zrzut ekranu prototypu, który wykonałem w innym projekcie testowym, kiedy to symulowałem:
Oto kod (uwaga: istnieje wiele wartości zakodowanych na stałe do celów demonstracyjnych)
Najpierw musiałem ustawić, heightForRowAtIndexPath
aby zezwolić na różne wysokości w UITableViewCell.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *text = [self.newsArray objectAtIndex:[indexPath row]];
if ([text isEqual:@"December 2012"])
{
return 25.0;
}
return 80.0;
}
Następnie chcę manipulować wyglądem i działaniem UITableViewCells, więc robię to w willDisplayCell:(NewsUITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
metodzie.
- (void)tableView:(UITableView *)tableView willDisplayCell:(NewsUITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (cell.IsMonth)
{
UIImageView *av = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 20, 20)];
av.backgroundColor = [UIColor clearColor];
av.opaque = NO;
av.image = [UIImage imageNamed:@"month-bar-bkgd.png"];
UILabel *monthTextLabel = [[UILabel alloc] init];
CGFloat font = 11.0f;
monthTextLabel.font = [BVFont HelveticaNeue:&font];
cell.backgroundView = av;
cell.textLabel.font = [BVFont HelveticaNeue:&font];
cell.textLabel.textColor = [BVFont WebGrey];
}
if (indexPath.row != 0)
{
cell.contentView.backgroundColor = [UIColor clearColor];
UIView *whiteRoundedCornerView = [[UIView alloc] initWithFrame:CGRectMake(10,10,300,70)];
whiteRoundedCornerView.backgroundColor = [UIColor whiteColor];
whiteRoundedCornerView.layer.masksToBounds = NO;
whiteRoundedCornerView.layer.cornerRadius = 3.0;
whiteRoundedCornerView.layer.shadowOffset = CGSizeMake(-1, 1);
whiteRoundedCornerView.layer.shadowOpacity = 0.5;
[cell.contentView addSubview:whiteRoundedCornerView];
[cell.contentView sendSubviewToBack:whiteRoundedCornerView];
}
}
Zwróć uwagę, że zrobiłem mój whiteRoundedCornerView wysokość 70,0 i to właśnie powoduje symulowaną przestrzeń, ponieważ wysokość komórki wynosi w rzeczywistości 80,0, ale mój contentView to 70,0, co nadaje mu wygląd.
Mogą istnieć inne sposoby na osiągnięcie tego jeszcze lepiej, ale właśnie tak znalazłem, jak to zrobić. Mam nadzieję, że pomoże to komuś innemu.