Я хотел бы замаскировать 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;
}
Это работает до сих пор, потому что теперь у меня есть табличное представление в форме треугольника. Но теперь у меня проблема, что я не могу прокручивать таблицу. Superview не направляет прикосновения к табличному представлению внутри. Любые идеи?