2016-11-21 27 views
0

是否有可能有沒有應用貝塞爾路徑蒙版到最後一個單元格的部分有圓角的桌面視圖? Bezier路徑的問題在於它也掩蓋了UITableViewRowActions,並使Delete和Edit按鈕不可見,但功能正常。有任何想法嗎?分組風格的部分的圓角桌面視圖

謝謝。

+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; 
       } 
     } 
}