Мені потрібно було зробити те саме, що UITableCells має "простір" між ними. Оскільки ви не можете буквально додати простір між клітинками, ви можете підробити це, маніпулюючи висотою комірки UITableView, а потім додавши UIView до contentView вашої комірки. Ось знімок екрана прототипу, який я робив в іншому тестовому проекті, коли моделював це:
Ось деякий код (Примітка. Є багато важко кодованих значень для демонстраційних цілей)
По-перше, мені потрібно було встановити значення, heightForRowAtIndexPath
щоб дозволити різні висоти на 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;
}
Далі я хочу маніпулювати зовнішнім виглядом UITableViewCells, тому я це роблю в willDisplayCell:(NewsUITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
методі.
- (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];
}
}
Зауважте, що я створив висоту whiteRoundedCornerView 70.0, і саме це викликає модельований простір, оскільки висота клітини насправді 80,0, але мій contentView - 70,0, що надає їй зовнішній вигляд.
Можуть бути й інші способи досягти цього ще краще, але я просто знайшов, як це зробити. Я сподіваюся, що це може допомогти комусь іншому.