Avevo bisogno di fare lo stesso concetto di avere UITableCells con uno "spazio" tra di loro. Poiché non è possibile aggiungere letteralmente spazio tra le celle, è possibile falsificarlo modificando l'altezza della cella di UITableView e quindi aggiungendo una UIView al contentView della cella. Ecco una schermata di un prototipo che ho fatto in un altro progetto di test mentre simulavo questo:
Ecco un po 'di codice (Nota: ci sono molti valori codificati a scopo dimostrativo)
Innanzitutto, dovevo impostare l' heightForRowAtIndexPath
opzione per consentire altezze diverse su 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;
}
Successivamente, voglio manipolare l'aspetto di UITableViewCells, quindi lo faccio nel willDisplayCell:(NewsUITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
metodo.
- (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];
}
}
Nota che ho creato la mia altezza di WhiteRoundedCornerView 70.0 e questo è ciò che provoca lo spazio simulato perché l'altezza della cella è in realtà 80.0 ma il mio contentView è 70.0 che gli dà l'aspetto.
Potrebbero esserci altri modi per farlo ancora meglio, ma è proprio come ho scoperto come farlo. Spero che possa aiutare qualcun altro.