Переместите / измените размер UIBezierPath
У меня есть перетаскиваемый вид, на котором есть слой маски. Слой маски имеет UIBezierPath, который делает область на вид прозрачной / прозрачной (эффект, который я хочу). Моя конечная цель - изменить положение и размер пути (не слоя маски!), Передав CGRect, который рассчитывается на основе пересечения моего вида и другого прямоугольника (в основном я хочу скрыть область, которая пересекается).
1) Как я создаю маску и путь (создает прозрачный прямоугольник на моем виде):
self.maskLayer = [CAShapeLayer layer];
self.maskLayer.frame = self.contentView.bounds;
//default path rect
CGRect const rect = CGRectMake(CGRectGetMidX(self.contentView.bounds) ,
CGRectGetMidY(self.contentView.bounds),
50,50);
path = [UIBezierPath bezierPathWithRect:rect];
[path appendPath:[UIBezierPath bezierPathWithRect:self.contentView.frame]];
self.maskLayer.path = path.CGPath;
self.maskLayer.fillRule = kCAFillRuleEvenOdd;
self.contentView.layer.mask = self.maskLayer;
2) Моя проблема в том, что я не смог найти способ изменить размер / изменить положение только пути. Я искал в Интернете, но не смог найти никакого решения.
Этот код не работает, но я могу подумать:
//runs while the view is being dragged(using UIPanGestureRecognizer)
-(void)move{
CGRect intersectedRect = CGRectIntersection(self.frame, self.productView.frame);
path = [UIBezierPath bezierPathWithRect:intersectedRect];
[path appendPath:[UIBezierPath bezierPathWithRect:intersectedRect]];
[self.maskLayer setNeedsDisplay];
}
Как я могу манипулировать только путем маскировщика в моей функции перемещения? Спасибо!