UITableCellsの間に「スペース」を設けるという同じ概念を実行する必要がありました。セル間に文字通りスペースを追加することはできないため、UITableViewのセルの高さを操作し、セルのcontentViewにUIViewを追加することで、スペースを偽造できます。これは、これをシミュレーションしているときに別のテストプロジェクトで作成したプロトタイプのスクリーンショットです。
ここにいくつかのコードがあります(注:デモンストレーション用にハードコードされた値がたくさんあります)
まず、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];
}
}
セルの高さは実際には80.0ですが、私のcontentViewは外観を与える70.0であるため、私はwhiteRoundedCornerViewの高さを70.0にしたことに注意してください。
これをより良く達成する他の方法があるかもしれませんが、それは私がそれを行う方法を見つけた方法です。私はそれが他の誰かを助けることを願っています。