У меня есть перетаскиваемый вид, на котором есть слой маски. На слое маски есть UIBezierPath, который делает область просмотра прозрачной/прозрачной (эффект, который я хочу). Моя конечная цель - изменить положение и размер пути (а не слой маски!), Передав CGRect, который вычисляется на основе пересечения моего представления и другого прямоугольника (в основном я хочу скрыть область, которая пересекает).Reposition/resize UIBezierPath
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];
}
Как я могу управлять только путем masklayer в моей функции двигаться? Спасибо!
Где вы получаете переменную пути во втором фрагменте? Где вы устанавливаете путь к слою маски? Почему вы добавляете тот же самый путь к пути? – yurish
Я использую ту же переменную пути из первого фрагмента, глобального пути var. Я устанавливаю путь в первом фрагменте здесь (self.maskLayer.path = path.CGPath;) И я добавляю self.contentView.frame к пути, извините, это была ошибка типа. – Soc
Да, но я не вижу, где вы назначили обновленный путь в методе перемещения. – yurish