Tôi cần phải thực hiện cùng một khái niệm về việc có UITableCells có "khoảng trống" giữa chúng. Vì bạn không thể thêm không gian giữa các ô theo nghĩa đen, bạn có thể giả mạo nó bằng cách thao tác chiều cao ô của UITableView và sau đó thêm UIView vào contentView của ô của bạn. Đây là ảnh chụp màn hình nguyên mẫu tôi đã làm trong một dự án thử nghiệm khác khi tôi đang mô phỏng điều này:
Đây là một số mã (Lưu ý: có rất nhiều giá trị được mã hóa cứng cho mục đích trình diễn)
Đầu tiên, tôi cần thiết lập heightForRowAtIndexPath
để cho phép các độ cao khác nhau trên 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;
}
Tiếp theo, tôi muốn thao tác giao diện của UITableViewCells để tôi thực hiện điều đó trong willDisplayCell:(NewsUITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
phương thức.
- (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];
}
}
Lưu ý rằng tôi đã tạo cho WhiteRoundedCornerView chiều cao 70.0 và đó là nguyên nhân gây ra không gian mô phỏng vì chiều cao của ô thực sự là 80.0 nhưng contentView của tôi là 70.0 mang lại vẻ ngoài.
Có thể có nhiều cách khác để thực hiện điều này thậm chí còn tốt hơn nhưng đó chỉ là cách tôi tìm ra cách thực hiện. Tôi hy vọng nó có thể giúp đỡ người khác.