2016-11-21 5 views
0

Возможно ли иметь табличный вид с секциями с закругленными углами без применения маски пути Безье к последней ячейке? Проблема с пути Безье заключается в том, что он также маскирует UITableViewRowActions и делает кнопки Delete и Edit невидимыми, но функциональными. Есть идеи?Округлые углы для разделов в сгруппированном стиле tableview

Спасибо.

+0

Поделиться изображением, чего вы хотите достичь. – Baig

ответ

-1

Просто вы можете изменить кулак и последние углы ячейки, чтобы обеспечить эффект округленного сечения.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     NSUInteger rowsCount = [self tableView:tableView numberOfRowsInSection:indexPath.section]; 
     if (1 == rowsCount) { 
       cell.contentView.layer.cornerRadius = 8.f; 
       cell.contentView.layer.masksToBounds = YES; 
     } else { 
       if (0 == indexPath.row) { 
         CGRect cellRect = cell.contentView.bounds; 
         CGMutablePathRef firstRowPath = CGPathCreateMutable(); 
         CGPathMoveToPoint(firstRowPath, NULL, CGRectGetMinX(cellRect), CGRectGetMaxY(cellRect)); 
         CGPathAddLineToPoint(firstRowPath, NULL, CGRectGetMinX(cellRect), 8.f); 
         CGPathAddArcToPoint(firstRowPath, NULL, CGRectGetMinX(cellRect), CGRectGetMinY(cellRect), 8.f, CGRectGetMinY(cellRect), 8.f); 
         CGPathAddLineToPoint(firstRowPath, NULL, CGRectGetMaxX(cellRect) - 8.f, 0.f); 
         CGPathAddArcToPoint(firstRowPath, NULL, CGRectGetMaxX(cellRect), CGRectGetMinY(cellRect), CGRectGetMaxX(cellRect), 8.f, 8.f); 
         CGPathAddLineToPoint(firstRowPath, NULL, CGRectGetMaxX(cellRect), CGRectGetMaxY(cellRect)); 
         CGPathCloseSubpath(firstRowPath); 

         CAShapeLayer *newSharpLayer = [[CAShapeLayer alloc] init]; 
         newSharpLayer.path = firstRowPath; 
         newSharpLayer.fillColor = [[UIColor whiteColor] colorWithAlphaComponent:1.f].CGColor; 
         CFRelease(firstRowPath); 

         cell.contentView.layer.mask = newSharpLayer; 
       } else if (indexPath.row == (rowsCount - 1)) { 
         CGRect cellRect = cell.contentView.bounds; 
         CGMutablePathRef lastRowPath = CGPathCreateMutable(); 
         CGPathMoveToPoint(lastRowPath, NULL, CGRectGetMinX(cellRect), CGRectGetMinY(cellRect)); 
         CGPathAddLineToPoint(lastRowPath, NULL, CGRectGetMaxX(cellRect), CGRectGetMinY(cellRect)); 
         CGPathAddLineToPoint(lastRowPath, NULL, CGRectGetMaxX(cellRect), CGRectGetMaxY(cellRect) - 8.f); 
         CGPathAddArcToPoint(lastRowPath, NULL, CGRectGetMaxX(cellRect), CGRectGetMaxY(cellRect), CGRectGetMaxX(cellRect)- 8.f, CGRectGetMaxY(cellRect), 8.f); 
         CGPathAddLineToPoint(lastRowPath, NULL, 8.f, CGRectGetMaxY(cellRect)); 
         CGPathAddArcToPoint(lastRowPath, NULL, CGRectGetMinX(cellRect), CGRectGetMaxY(cellRect), CGRectGetMinX(cellRect), CGRectGetMaxY(cellRect) - 8.f, 8.f); 
         CGPathCloseSubpath(lastRowPath); 

         CAShapeLayer *newSharpLayer = [[CAShapeLayer alloc] init]; 
         newSharpLayer.path = lastRowPath; 
         newSharpLayer.fillColor = [[UIColor whiteColor] colorWithAlphaComponent:1.f].CGColor; 
         CFRelease(lastRowPath); 

         cell.contentView.layer.mask = newSharpLayer; 
       } 
     } 
}