Ich musste das gleiche Konzept machen, dass UITableCells einen "Raum" zwischen sich haben. Da Sie nicht buchstäblich Leerzeichen zwischen Zellen hinzufügen können, können Sie diese fälschen, indem Sie die Zellenhöhe von UITableView ändern und dann der contentView Ihrer Zelle eine UIView hinzufügen. Hier ist ein Screenshot eines Prototyps, den ich in einem anderen Testprojekt gemacht habe, als ich dies simuliert habe:
Hier ist ein Code (Hinweis: Zu Demonstrationszwecken gibt es viele fest codierte Werte)
Zuerst musste ich das einstellen heightForRowAtIndexPath
, um unterschiedliche Höhen in der UITableViewCell zuzulassen.
- (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;
}
Als nächstes möchte ich das Erscheinungsbild der UITableViewCells ändern, damit ich dies in der willDisplayCell:(NewsUITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
Methode mache .
- (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];
}
}
Beachten Sie, dass ich meine whiteRoundedCornerView-Höhe 70.0 festgelegt habe und dies den simulierten Speicherplatz verursacht, da die Höhe der Zelle tatsächlich 80.0 beträgt, meine contentView jedoch 70.0, wodurch sie angezeigt wird.
Es gibt vielleicht andere Möglichkeiten, dies noch besser zu erreichen, aber so habe ich es gefunden. Ich hoffe es kann jemand anderem helfen.