Saya perlu melakukan konsep yang sama agar UITableCells memiliki "ruang" di antara mereka. Karena Anda tidak bisa menambahkan ruang antar sel, Anda dapat memalsukannya dengan memanipulasi ketinggian sel UITableView dan kemudian menambahkan UIView ke contentView sel Anda. Berikut ini adalah cuplikan layar dari prototipe yang saya lakukan di proyek pengujian lain ketika saya mensimulasikan ini:
Berikut ini beberapa kode (Catatan: ada banyak nilai yang dikodekan untuk tujuan demonstrasi)
Pertama, saya perlu mengatur heightForRowAtIndexPath
untuk memungkinkan ketinggian yang berbeda pada 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;
}
Selanjutnya, saya ingin memanipulasi tampilan dan nuansa UITableViewCells jadi saya melakukannya dalam willDisplayCell:(NewsUITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
metode.
- (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];
}
}
Perhatikan bahwa saya membuat whiteRoundedCornerView tinggi 70.0 saya dan itulah yang menyebabkan ruang simulasi karena tinggi sel sebenarnya 80.0 tetapi contentView saya 70.0 yang memberikan tampilan.
Mungkin ada cara lain untuk mencapai ini lebih baik, tetapi hanya bagaimana saya menemukan cara melakukannya. Saya harap ini bisa membantu orang lain.