ฉันต้องการทำแนวคิดเดียวกันของการมี 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 height 70.0 ของฉันและนั่นคือสิ่งที่ทำให้เกิดพื้นที่จำลองเนื่องจากความสูงของเซลล์เป็นจริง 80.0 แต่ contentView ของฉันคือ 70.0 ซึ่งทำให้ปรากฏ
อาจมีวิธีอื่นในการทำให้สำเร็จดียิ่งขึ้น แต่นี่เป็นเพียงวิธีที่ฉันค้นพบวิธีการทำ ฉันหวังว่ามันจะช่วยคนอื่นได้