当顶部或底部单元格在嵌入分组表格视图中隐藏时设置圆角

问题描述 投票:0回答:1

我有一个带有静态单元格的 UITableView。我根据某些条件隐藏了一些单元格,方法是在 heightForRowAtIndexPath 方法中将单元格的高度设置为 0,如下所示。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([self shouldHideCell:indexPath]) {
        return 0;
    }
}

我将 UITableView 的样式设置为 Inset Grouped。因此,当我隐藏部分中的第一个或最后一个单元格时,单元格无法正确获得预期的圆角。当第一个或最后一个单元格的高度设置为 0 时,有什么办法可以使角成为圆角吗?

enter image description here

ios objective-c xcode uitableview
1个回答
0
投票

您还可以创建自定义视图来替换单元格内容,同时保持单元格本身在布局中,而不是通过返回高度 0 来完全隐藏单元格。

 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"YourCellIdentifier" forIndexPath:indexPath];
    if ([self shouldHideCell:indexPath]) {
        cell.contentView.hidden = YES; 
    } else {
        cell.contentView.hidden = NO;
      
/*your cell must be configure here*/

    }
    return cell;
}

如果您仍然喜欢隐藏单元格,您可以检查第一个和最后一个可见的单元格,然后调整layer.cornerRadius和layer.masksToBounds属性

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"YourCellIdentifier" forIndexPath:indexPath];
    if ([self shouldHideCell:indexPath]) {
       
        if (indexPath.row == 0) { 
            cell.layer.cornerRadius = 10;
            cell.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner; 
        } else if (indexPath.row == [self.tableView numberOfRowsInSection:indexPath.section] - 1) { 
            cell.layer.cornerRadius = 10;
            cell.layer.maskedCorners = kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner; 
        } else {
            cell.layer.cornerRadius = 0; 
        }
    }
    return cell;
}
© www.soinside.com 2019 - 2024. All rights reserved.