我想以三角形的形状掩盖 UITableView。我的第一种方法是设置一个 CAShapeLayer 并将其作为蒙版直接添加到表格视图上。但后来,我得到了与表格视图一起滚动的三角形。
我的下一个方法是将表格视图作为具有完全相同位置和大小的超级视图放在 UIView 中。在下面的代码片段中,self.triangleView 是超级视图。
- (void)viewDidLoad
{
[super viewDidLoad];
CAShapeLayer *mask = [[[CAShapeLayer alloc] init] autorelease];
mask.frame = _tableView.bounds;
mask.fillColor = [[UIColor blackColor] CGColor];
CGFloat width = self.triangleView.frame.size.width;
CGFloat height = self.triangleView.frame.size.height;
CGMutablePathRef path = CGPathCreateMutable();
// draw the triangle
CGPathMoveToPoint(path, NULL, 0, height);
CGPathAddLineToPoint(path, NULL, width, 0);
CGPathAddLineToPoint(path, NULL, width, height);
CGPathCloseSubpath(path);
mask.path = path;
CGPathRelease(path);
self.triangleView.layer.mask = mask;
}
到目前为止,这很有效,因为我现在有一个形状像三角形的表格视图。但我现在有问题,我无法滚动表格视图。超级视图不会将触摸路由到内部的表格视图。有任何想法吗?