Ben UITableCells aralarında bir "boşluk" sahip aynı kavram yapmak gerekiyordu. Hücreler arasında tam anlamıyla boşluk ekleyemeyeceğiniz için, UITableView'ın hücre yüksekliğini değiştirerek ve ardından hücrenizin contentView öğesine bir UIView ekleyerek sahte yapabilirsiniz. İşte bunu simüle ederken başka bir test projesinde yaptığım bir prototipin ekran görüntüsü:
İşte bazı kodlar (Not: gösterim amacıyla çok sayıda sabit kodlanmış değer vardır)
İlk olarak, heightForRowAtIndexPath
UITableViewCell farklı yüksekliklere izin verecek şekilde ayarlamak gerekiyordu .
- (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;
}
Sonra, ben willDisplayCell:(NewsUITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
yöntem ve bunu yapmak UITableViewCells görünümünü değiştirmek istiyorum .
- (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];
}
}
Benim whiteRoundedCornerView yüksekliği 70.0 yaptığımı ve hücrenin yüksekliği aslında 80.0 olduğundan, ancak contentView 70.0 görünümü veren simüle boşluk neden olduğunu unutmayın.
Bunu daha iyi yapmanın başka yolları da olabilir ama bunu nasıl yapacağımı buldum. Umarım başka birine yardımcı olabilir.